不可测试代码的警告标志

Lud*_*uer 12 oop singleton unit-testing

不可测试的代码真的让我烦恼.以下内容使oo-code不可测试:

  • 全局状态,例如,Singleton设计模式
  • 静态方法做一些奇特的工作,例如数据库访问
  • 深度继承树
  • 在构造函数中工作,例如控制语句
  • 违反单一责任原则的课程

有更多的警示标志吗?

pax*_*blo 12

这些都不会使代码无法测试.它们可能会使查找边缘案例错误变得更加困难,但是,如果您已经完全指定了测试的成功标准(并且测试驱动开发使此更容易),您所要做的就是通过标准.

TDD可以应用于特定零件的行为以及整个项目,因此您可以轻松地测试非常小的组件.但是,它意味着测试结果,而不是获得这些结果的方法.

如果测试通过,您已满足要求.如果存在错误,则这是测试的问题,而不是正在测试的代码(在这种情况下,应该修改测试以捕获先前无法预料的问题).

你不应该关心(在功能的交付方面)你的一个构造函数中是否有while语句.你应该问问自己有哪些业务要求?我强烈怀疑您的客户会提供一系列要求,包括"继承限于4级".他们可能会将"无错误"列为要求,但您必须在那个问题上进行协商:-).


ksh*_*har 11

请参阅MiškoHevery的以下博客文章:如何编写3v1L,不可测试的代码.

  • 与任何关于测试的文章都非常不同〜以良好的思维方式。 (2认同)

ori*_*rip 6

硬编码的依赖项.


bar*_*ron 5

  • 不编程接口
  • 新建对象而不是使用工厂/IOC