JUnit反模式 - 编程入门网
。所以,让我们谈一下边界测试。如果存在一个边界,那么输入参数为 0,这是一个有效的输入,从数学上说,0 的阶乘是 1。执行前面的实现会导致测试失败,因为您希望的返回值是 1,但得到的却是 IllegalArgumentException。还应该检查边界的另一边 -1,以验证可以得到期望的 IllegalArgumentException,而不是一个整数。
对其他边界的相应测试将留做练习供您操练。提示:如果执行 Factorial.eval(100) 将会发生什么情况? JUnit反模式(3)时间:2011-02-04 Alex Garrett简单测试 与愉快路径反模式一样,简单测试反模式讲的不是关于“是什么”而是“不是 什么”。若开发人员没有经验,并且代码难以测试,则通常会出现这种症状。结果,您会看到对容易测试 (equals 和 toString 往往很突出,参见清单 1) 的内容进行多次的测试,而被测单元的真正逻辑却被忽略了。结果出现了许多不能检测系统的传递测试,这会导致对代码健康状态的误解。 清单 1. 一些容易测试的签名
进行系统测试之所以困难,是因为您经常尝试测试某个方法,而不是检测某个装置。假设您要测试一个堆栈的实现,那么您的测试签名可能如清单 2 所示。 清单 2. 用于堆栈单元测试的可能测试签名
其中有些测试很容易,如清单 3 所示。 清单 3. 用于空堆栈的单元测试
但是,如何测试 push 的愉快路径呢? 清单 4. 用于 stack.push() 的元单测试
这是测试单元实现的常见错误,而不是单元与其客户机签定的契约。假设 push 方法的实现方式如下:
JUnit反模式(4)时间:2011-02-04 Alex Garrett您需要进行这一测试来验证 elements List 现在是否含有 push 添加的 Object。所以,您要编写如下测试:
其中的问题是破坏了封装,原因是公开了被测单元的内幕。相反,要测试 push 是否将对象放入了列表,您应测试堆栈与客户机签定的契约。J.B. Rainsberger 将此称为测试装置 (fixture)。 现在,您的测试如清单 5 所示。 清单 5. 用于堆栈装置的单元测试
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |