使用ant运行"纯"JUnit 4测试

Lio*_*orH 23 ant junit junit4

我们已经迁移到JUnit 4和ant 1.7

测试在eclipse中运行良好,但在使用ant运行测试时会忽略注释.

根据Ant junit任务文档:

它也适用于JUnit 4.0,包括仅使用注释而不使用JUnit4TestAdapter的"纯"JUnit 4测试.

但是文档没有详细说明应该如何配置它.

junit任务是否需要特殊设置?我错过了什么吗?我们有两个测试扩展TestCase(即3.8样式)和"纯"Junit 4测试,这可能是问题吗?

Hom*_*001 14

我正在使用Ant的纯JUnit4测试.

这是我的构建文件的有趣部分:

<junit printsummary="yes" haltonfailure="yes">
    <formatter type="xml"/>
    <classpath refid="path.test"/>
    <batchtest fork="yes" todir="${dir.report.unittests.xml}">
        <fileset dir="src">
            <include name="**/*Test*.java"/>
        </fileset>
    </batchtest>
</junit>
Run Code Online (Sandbox Code Playgroud)

确保在Ant的lib目录中有最新版本的junit.jar文件.据我所知,所需版本随ant 1.7或更高版本提供......

  • 因此,即使JUnit 4不需要,也无法避免必须使用测试类的命名模式(如"*Test.java")? (3认同)
  • 如果您的实用程序类恰好在开始时具有测试但不是测试类,该怎么办?通常,"使用JUnit 4"意味着"@Test注释标记测试,而不是类名".应该可以包含所有.java文件,并让它只运行带有测试的文件. (3认同)
  • @Trejkaz添加了一个新参数,可以为您过滤掉非测试类.它位于[以下答案.](http://stackoverflow.com/questions/635481/running-pure-junit-4-tests-using-ant/25148876#25148876) (3认同)

Mik*_*keD 7

Ant默认提供JUnit 3版本.JUnit 3不支持测试注释.

要使用junit任务中的JUnit 4注释,请确保在junit任务的嵌套classpath元素中提供JUnit 4 jar的位置(请参阅ant FAQ中的此条目).

<junit showoutput="yes" fork="true">
    <classpath>
        <!-- The location of the JUnit version that you want to use -->
        <pathelement location="lib/junit-4.9b1.jar"/>
    </classpath>

    <formatter type="plain" usefile="false" />

    <batchtest>
        <fileset dir="${tests.dir}"/>
    </batchtest>
</junit>
Run Code Online (Sandbox Code Playgroud)

这是覆盖ANT_HOME/lib中的ant-junit.jar的首选解决方案,因为这意味着您可以将JUnit jar保留在源代码控制中,与代码一起使用,可以直接升级到更高版本.

请注意,虽然我在上面的文件集中没有指定任何包含模式,但这意味着junit任务将尝试针对该目录结构中的所有类运行JUnit,这可能导致包含许多不包含的类任何测试取决于您如何构建源文件.