单元测试的目标是隔离程序部件并证明这些单个部件是正确的。单元测试带来的益处是在软件开发过程的早期就能发现问题。单元测试消除程序单元的不可靠,使集成测试更简单。
分离接口和实现:因为很多类会引用其它类,对这个类的测试经常会要求测试其它的类。一个最普遍的例子是依赖于数据库的类:为了测试它,测试人员通常编写代码去操作数据库。这是不对的,因为单元测试不应超出待测试的类边界。作为替代,软件开发人员应创建一个数据库连接的抽象接口,然后实现这个接口的模拟对象。通过对代码所需附件的抽象(临时降低了网状的耦合效应),这些独立程序单元较前者更能被完整测试。高质量的代码单元也可提供更好的可维护性。
软件测试是一个组合问题。例如,每一个布尔型的决断语句需要至少两种测试:一个返回真,一个返回假。因此,针对每行书写的代码,程序员通常需要写3至5行的测试代码。
系统中大多数代码都经过单元测试,但并非所有代码路径都必需单元测试。
单元测试粒度
TDD的创造者给出的答案是测试越少越好,只在复杂容易出错有必要的地方进行测试。详情见参考链接二。很多时候我们似乎过多追求了形式。
单元测试
可能需要对代码进行重构,以便于进行单元测试。
待看:
IDE SonarLint插件快速检查认知复杂度 https://www.sonarsource.com/docs/CognitiveComplexity.pdf(待看)
IDEA MetricsReloaded插件衡量圈复杂度(待用)
参考链接:
https://zh.wikipedia.org/wiki/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95