使用JUnit 3,如果您忘记将测试添加到套件中,它将无法运行。如何查找不属于顶级套件的所有JUnit测试用例,或者递归包含的任何套件?
答案 0 :(得分:1)
使用UCDetector,您应该能够从Eclipse中识别未使用的公共类(包括未使用的TestCases)。
答案 1 :(得分:1)
最简单的方法是使用ant junit任务和测试的命名约定(例如匹配* Test.java)。
然后你可以告诉junit在你的项目中运行* Test.java中的每个测试。以下是取自ant manual。
的截断示例<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement location="${build.tests}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<formatter type="plain"/>
<batchtest fork="yes" todir="${reports.tests}">
<fileset dir="${src.tests}">
<include name="**/*Test*.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
答案 2 :(得分:1)
我们在项目中所做的是遍历所有类文件并查看扩展TestCase(您引用该文件,执行Class clazz = Class.forName()然后执行Test.isAssignableFrom(clazz)检查。
它肯定变得混乱(例如,某些东西是不应该运行的基类,并且那些必须被标记)。
知道它是否在套件中更难。我会使用自己的套件构建器类,并要求使用它构建所有套件,并为其添加逻辑以记录构建器引用的所有现有类,然后将它们传递给检查器,并且检查器知道它们已被计入对
问题是所有这些都在JUnit4中中断,使其成为即时遗留代码。
最好,最稳定的解决方案(直到JUnit解决了它的套件构建问题)是有一个开发文化,要么命名所有的测试命名转换(标准以Test结尾)并让Ant运行它们,或者开发测试时只能通过套件运行它们。
答案 3 :(得分:1)
包含测试包的代码覆盖率会选择任何未运行的测试类