哪些单元测试通常难以编写,为什么?我对不需要嘲笑的方法特别感兴趣。
由于
答案 0 :(得分:1)
两个单元测试困难的案例:
调用属于其他类的静态方法的方法,特别是当其他类具有静态或执行重要工作时。陷入困境试图“单元”测试一个方法,通过传递闭包,数据库查询可以吸收。
直接创建其他类的实例的方法(即,通过new
),特别是当另一个类的构造函数本身需要静态时,或者它在构造函数中执行重要工作时。
答案 1 :(得分:0)
一个很好的A到Z可测性问题指南,可以在Misko广泛的testability guide中找到易于/难以测试代码的并排代码示例。
点击“缺陷#x”链接(它们看起来像纯文本,但它们是单独的链接)。
答案 2 :(得分:0)
大而复杂的方法可以同时完成很多事情,而这些方法确实应该是分开的。 (例如:从配置对象中获取内容,根据某些变量创建URL,对URL进行编码,发送请求,对响应执行某些操作......您将获得演练)。
一切都是静止的。使用New创建的东西,虽然我没有找到一种正确的方法来避免它,而不会在工厂发送整个应用程序。
答案 3 :(得分:0)
几乎总是关于依赖性。
大多数代码依赖于外部系统,例如数据库,文件系统,电子邮件客户端,网络等。在主要内部系统(例如,拼写检查模块或重新计算引擎......)上依赖于它也很常见。
如果这些依赖性不易替代,则系统变得难以测试。 调用静态和单例的类是最严重的违规者,但是任何不通过构造函数或属性接受它的依赖的类都很难测试。
有一些合法的情况难以测试: