18

我正在使用 Junit 4.4 和 Ant 1.7。如果一个测试用例因错误而失败(例如,因为一个方法抛出了意外的异常),我不会得到任何关于错误是什么的详细信息。

我的 build.xml 看起来像这样:

<target name="test" depends="compile">
<junit printsummary="withOutAndErr" filtertrace="no" fork="yes" haltonfailure="yes" showoutput="yes">
  <classpath refid="project.run.path"/>
  <test name="a.b.c.test.TestThingee1"/>
  <test name="a.b.c.test.NoSuchTest"/>
</junit>
</target>

当我运行“ant test”时,它显示(例如)2 次测试运行,0 次失败,1 次错误。它没有说“没有像 NoSuchTest 这样的测试”,尽管这是完全合理的,并且会让我找出错误的原因。

谢谢!

-担

4

2 回答 2

34

弄清楚了 :)

我需要在 junit 块内添加一个“格式化程序”。

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

什么皮塔饼。

-担

于 2008-11-29T08:14:14.020 回答
7

如果您要进行大量测试,则可能需要考虑两个更改:

  1. 运行所有测试,而不是在第一个错误处停止
  2. 创建显示所有测试结果的报告

使用 junitreport 任务很容易做到:

<target name="test">
    <mkdir dir="target/test-results"/>
    <junit fork="true" forkmode="perBatch" haltonfailure="false"
           printsummary="true" dir="target" failureproperty="test.failed">
        <classpath>
            <path refid="class.path"/>
            <pathelement location="target/classes"/>
            <pathelement location="target/test-classes"/>
        </classpath>
        <formatter type="brief" usefile="false" />
        <formatter type="xml" />
        <batchtest todir="target/test-results">
            <fileset dir="target/test-classes" includes="**/*Test.class"/>
        </batchtest>
    </junit>

    <mkdir dir="target/test-report"/>
    <junitreport todir="target/test-report">
        <fileset dir="target/test-results">
            <include name="TEST-*.xml"/>
        </fileset>
        <report format="frames" todir="target/test-report"/>
    </junitreport>

    <fail if="test.failed"/>
</target>
于 2008-11-29T15:30:10.880 回答