查找未包含在任何套件中的JUnit 3测试?

时间:2010-06-21 20:34:09

标签: java unit-testing junit

如果有人写了一个新的单元测试,但是他们忘记将它添加到套件中,即使有人后来破坏了测试,连续构建也将继续愉快地通过。有没有办法发现未包含在套件中的JUnit测试?

修改
我知道我可以转到JUnit 4,但问题就变成了,我怎么找到缺少@Test注释的测试?

4 个答案:

答案 0 :(得分:1)

转到junit4?

答案 1 :(得分:1)

我会做以下事情:

  1. 使用findgrep的某种组合来提取假定的测试类名称列表;例如grep包含extend TestCase

  2. 的文件
  3. 在测试报告中使用findgrep的某种组合来提取实际运行的测试类的列表。

  4. 对两个列表进行排序,并使用diff进行比较。

  5. 存在误报和漏报的风险;例如不直接扩展TestCase的测试类可能会漏网。但是这种方法会给你一个快速的“第一切”答案。

答案 2 :(得分:1)

使用TestSuite.tests(),您可以生成测试套件( list1 )中包含的测试列表(递归),并使用Java反射生成所有测试的列表(来自扩展{{ 1}})( list2 )。

然后从 list2 中减去 list1 以生成未包含在任何套件中的测试列表。

运行此Java程序时,类路径应包含所有测试类。

答案 3 :(得分:1)

我建议不要手动创建测试套件。相反,请确保您的构建自动运行“tests”目录下的所有测试。 Ant支持使用< junit>执行此操作的方法元件。

您还可以创建一个套件,通过查找扩展TestCase的所有非抽象类来查找要运行的测试。您可以使用Reflections滚动自己的反光套件,或搜索免费实施(请参阅How do I programmatically run all the JUnit tests in my Java application?