使用Ant构建器运行所有单元测试


问题内容

我的项目中有一个包含一堆JUnit测试的目录。到目前为止,我已经为每个单元测试使用了单独的目标。例如:

   <target name="MyTest">
        <mkdir dir="${junit.output.dir}"/>
        <junit fork="yes" printsummary="withOutAndErr">
            <formatter type="xml"/>
            <test name="tests.MyTest" todir="${junit.output.dir}"/>
            <classpath refid="MyProject.classpath"/>
        </junit>
    </target>

此方法要求我每次添加单元测试时都更改构建文件。
我希望能够使用单个Ant构建器目标来运行项目中的所有单元测试。
有可能吗?


问题答案:

是的,您需要查看文件集标记,例如:

<junit printsummary="yes" haltonfailure="yes">
  <classpath>
    <pathelement location="${build.tests}"/>
    <pathelement path="${MyProject.classpath}"/>
  </classpath>

  <formatter type="xml"/>

  <batchtest fork="yes" todir="${reports.tests}">
    <fileset dir="${src.tests}">
      <include name="**/*Test*.java"/>
      <exclude name="**/AllTests.java"/>
    </fileset>
  </batchtest>
</junit>

重要的部分是使用文件集和通配符/通配符模式来匹配测试名称。有关junit任务的完整文档,包括以下示例:

http://ant.apache.org/manual/Tasks/junit.html