用Java捕获虚假单元测试

时间:2018-11-14 18:36:53

标签: java unit-testing jacoco

尽管jacoco提供了很好的覆盖范围,但是我的测试中没有断言中的断言。除了更好的代码审查之外,还有其他方法可以检测到这种测试吗?

2 个答案:

答案 0 :(得分:2)

使用PMD。它对unitTests有一个标准规则,没有任何断言。

答案 1 :(得分:0)

如果您的目的仅是查找错误的测试,即那些缺少任何assert语句的测试,则PMD之类的检查器可能会胜任。您可能会得到一些误报,即对于那些实际测试目标只是为了确保SUT不会引发异常的测试(Peter Lawrey的评论中提到的一种情况)。

但是,在测试中还有很多问题并不容易找到:断言可能是错误的(assertTrue(isPrime(9))),或者断言可能只解决了相关方面的一部分(例如,在处理有理数时,仅检查分子而不是分母。

为了检测这种质量问题,还存在一些方法,例如突变测试,可以在一定程度上有所帮助。而且,在首先编写测试时:使用测试优先开发过程可确保测试至少失败一次。

但是,一个测试套件可能存在其他问题,这些问题与已执行的测试集无关,但与非功能质量标准有关:测试执行时间,测试套件的可维护性,诊断输出的表达能力(以防万一)测试失败等。

当您有兴趣检测这些类型的问题时,我认为评论是不可避免的。