如何找到不属于任何套件的单元测试?

时间:2009-03-25 13:32:30

标签: java unit-testing junit

使用JUnit 3,如果您忘记将测试添加到套件中,它将无法运行。如何查找不属于顶级套件的所有JUnit测试用例,或者递归包含的任何套件?

4 个答案:

答案 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)

包含测试包的代码覆盖率会选择任何未运行的测试类