JUnit没有提供有关“错误”的信息

时间:2008-11-29 07:55:42

标签: java ant junit

我正在使用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这样的测试”,即使这是完全合理的,也可以让我弄清楚错误的原因。

谢谢!

-Dan

2 个答案:

答案 0 :(得分:32)

弄明白:)

我需要在junit块中添加“formatter”。

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

PITA是什么。

-Dan

答案 1 :(得分:6)

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

  1. 运行所有测试,而不是停在第一个错误
  2. 创建显示所有测试结果的报告
  3. 使用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>