如何用彩色强制打印junit的报告

时间:2014-09-06 05:52:19

标签: java ant junit

下面是我的build.xml

    <target name="tdd" description="Run unittest" depends="jar">
    <mkdir dir="${build.test.dir}"/>
    <javac srcdir="${test.src.dir}" destdir="${build.test.dir}"
        includeAntRuntime="false">
        <classpath refid="lib.junit"/>
        <classpath refid="lib.dataquery"/>
    </javac>
    <jar destfile="${build.jar.dir}/dataqueryTDD.jar">
        <fileset dir="${build.test.dir}">
            <include name="**/*.class"/>
        </fileset>
    </jar>
    <mkdir dir="${build.test.report.dir}"/>

    <junit printsummary="yes">
        <classpath refid="lib.junit"/>
        <classpath refid="lib.dataquery"/>
        <classpath refid="lib.dataquery.tdd"/>
        <formatter type="xml"/>
        <batchtest todir="${build.test.report.dir}">
            <fileset dir="${test.src.dir}" includes="**/*Test.java"/>
        </batchtest>
    </junit>

    <junitreport todir="${build.test.report.dir}" tofile="TEST-Summary.xml">
        <fileset dir="${build.test.report.dir}" includes="*.xml"/>
    </junitreport>
</target>

我可以运行它们并无误地打印报告。

然而,蚂蚁只会告诉我测试是否失败。我需要通过命令cat手动检出测试报告。我想知道如何强制ant在stdout上使用颜色转储失败的测试报告。

由于

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

<!-- new testwithcat target -->
<target name="testwithcat" depends="tdd, catreport"/>

<target name="tdd" description="Run unittest" depends="jar">
    <mkdir dir="${build.test.dir}"/>
    <javac srcdir="${test.src.dir}" destdir="${build.test.dir}"
        includeAntRuntime="false">
        <classpath refid="lib.junit"/>
        <classpath refid="lib.dataquery"/>
    </javac>
    <jar destfile="${build.jar.dir}/dataqueryTDD.jar">
        <fileset dir="${build.test.dir}">
            <include name="**/*.class"/>
        </fileset>
    </jar>
    <mkdir dir="${build.test.report.dir}"/>

<!-- add errorProperty, failureProperty to junit task -->
<junit printsummary="yes" errorProperty="test.failed" failureProperty="test.failed">
        <classpath refid="lib.junit"/>
        <classpath refid="lib.dataquery"/>
        <classpath refid="lib.dataquery.tdd"/>
        <formatter type="xml"/>
        <batchtest todir="${build.test.report.dir}">
            <fileset dir="${test.src.dir}" includes="**/*Test.java"/>
        </batchtest>
    </junit>

    <junitreport todir="${build.test.report.dir}" tofile="TEST-Summary.xml">
        <fileset dir="${build.test.report.dir}" includes="*.xml"/>
    </junitreport>
</target>

<!-- add cat report target that runs if test.failed has been set in junit task -->  
  <target name="catreport" depends="test" if="test.failed">
    <echo message="Test failed - cat the test report"/>
    <!-- customise the following to cat your report in colour -->
    <exec executable="cat">
      <arg value="${build.test.report.dir}/TEST-Summary.xml"/>
    </exec>
  </target>

使用:

运行
ant testwithcat

输出:

Test failed - cat the test report
[content of ${build.test.report.dir}/TEST-Summary.xml]

您需要自定义

<exec executable="cat">
    <arg value="${build.test.report.dir}/TEST-Summary.xml"/>
</exec>

使用您自己的命令,以彩色方式捕捉您的报告&#34;。

要获得纯文本输出,请查看Ant JUnit Nice Output Formatter

您可以使用

<report format="frames" todir="${build.test.report.dir}"/>

<report format="noframes" todir="${build.test.report.dir}"/> 

在junitreport任务中生成html输出。

您可以替换

<exec executable="cat">
    <arg value="${build.test.report.dir}/TEST-Summary.xml"/>
</exec>

通过调用在浏览器中显示html。请参阅Exec以获取执行此操作的示例代码。