检测从未断言任何内容的JUnit“测试”

时间:2013-05-02 15:28:20

标签: junit assert

我们曾经有一位喜欢贡献代码的技术总监,并且对添加单元测试也非常热心。不幸的是,他首选的测试方式是产生一些输出到屏幕并直观地检查结果。

鉴于我们有大量测试,是否有任何工具或技术可用于识别测试从未断言?

3 个答案:

答案 0 :(得分:2)

由于这是一次性操作,我会:

  • 扫描所有测试方法(简单,获取jUnit报告XML)
  • 使用IDE或其他方法搜索对Assert的引用。*,将结果导出为方法列表
  • awk / perl / excel查找不匹配的结果

编辑:另一种选择是只查找对System.out的引用或者他输出内容的首选方式,大多数测试都没有。

答案 1 :(得分:1)

不确定是否有工具,但想到的想法是双重的。

  1. 创建一个TestRule类,用于跟踪每次测试的断言数(使用静态计数器,在测试开始时清除计数器,断言在测试结束时它不是0)。

  2. 将Assert类包装在您自己的代理中,每次调用它时都会递增TestRule的计数器。

  3. 您的Assert类是否被称为Assert,您只需要更新导入并将规则添加到测试中。上述机制不是线程安全的,因此如果您同时运行多个测试,则结果将不正确。

答案 2 :(得分:1)

如果这些测试是唯一产生输出的测试,那么使用System.out.println(自动批量替换org.junit.Assert.fail("Fix test: " +会突出显示那些没有减轻其重量的测试。这种技术可以很容易地在运行后检查IDE中的那些测试,并决定是修复还是删除它们;它也清楚地表明了进展。