java查找未包含在任何套件中的JUnit3测试?
如果有人编写了一个新的单元测试,但他们忘记将其添加到套件中,那么即使后来有人破坏了测试,连续构建也会继续顺利通过。有没有办法发现套件中不包含的JUnit测试
编辑
我知道我可以转到JUnit4,但问题是,如何找到缺少@Test注释的测试
你可以在下面搜索框中键入要查询的问题!
如果有人编写了一个新的单元测试,但他们忘记将其添加到套件中,那么即使后来有人破坏了测试,连续构建也会继续顺利通过。有没有办法发现套件中不包含的JUnit测试
编辑
我知道我可以转到JUnit4,但问题是,如何找到缺少@Test注释的测试
# 1 楼答案
我会做以下几件事:
使用
find
和grep
的一些组合来提取假定测试类名的列表;e、 g.grep
用于包含extend TestCase
的文件在测试报告上使用
find
和grep
的组合来提取实际运行的测试类的列表对两个列表进行排序,并使用
diff
进行比较存在误报和漏报的风险;e、 不直接扩展
TestCase
的测试类可能会漏网。但这种方法会给你一个快速的“第一步”答案# 2 楼答案
我建议不要手动创建测试套件。相反,请确保构建自动运行“tests”目录下的所有测试。Ant支持使用<;junit>;元素
您还可以创建一个套件,通过查找扩展TestCase的所有非抽象类来查找要运行的测试。您可以使用Reflections滚动您自己的反射套件,或者搜索免费实现(请参见How do I programmatically run all the JUnit tests in my Java application?)
# 3 楼答案
使用
TestSuite.tests()
可以生成测试套件(list1)中包含的测试列表(递归),使用Java反射可以生成所有测试列表(从扩展TestCase
的类中)(list2)然后从list2中减去list1,生成未包含在任何套件中的测试列表
运行此Java程序时,类路径应包含所有测试类
# 4 楼答案
搬到junit4