有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java查找未包含在任何套件中的JUnit3测试?

如果有人编写了一个新的单元测试,但他们忘记将其添加到套件中,那么即使后来有人破坏了测试,连续构建也会继续顺利通过。有没有办法发现套件中不包含的JUnit测试

编辑
我知道我可以转到JUnit4,但问题是,如何找到缺少@Test注释的测试


共 (4) 个答案

  1. # 1 楼答案

    我会做以下几件事:

    1. 使用findgrep的一些组合来提取假定测试类名的列表;e、 g.grep用于包含extend TestCase的文件

    2. 在测试报告上使用findgrep的组合来提取实际运行的测试类的列表

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

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

  2. # 2 楼答案

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

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

  3. # 3 楼答案

    使用TestSuite.tests()可以生成测试套件(list1)中包含的测试列表(递归),使用Java反射可以生成所有测试列表(从扩展TestCase的类中)(list2

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

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

  4. # 4 楼答案

    搬到junit4