空的Junit报告来自蚂蚁
我正在尝试使用ant来运行junit测试并生成报告。 我能够成功运行测试,但报告文件是空的。
我究竟做错了什么 ?
这是我的build.xml:
<project name="JunitTest" default="test" basedir=".">
<property name="testdir" location="." />
<property name="srcdir" location="." />
<property name="full-compile" value="true" />
<property name="test.reports" value="./reports" />
<path id="classpath.base"/>
<path id="classpath.test">
<pathelement location="${testdir}" />
<pathelement location="${srcdir}" />
<path refid="classpath.base" />
</path>
<target name="clean" >
<delete verbose="${full-compile}">
<fileset dir="${testdir}" includes="**/*.class" />
</delete> `
</target>
<target name="compile" depends="clean">
<javac srcdir="${srcdir}" destdir="${testdir}" verbose="${full-compile}" >
<classpath refid="classpath.test"/>
</javac>
</target>
<target name="test" depends="compile">
<junit>
<classpath refid="classpath.test" />
<formatter type="brief" usefile="false" />
<test name="com.tests.nav1" />
</junit>
<junitreport todir="${test.reports}">
<fileset dir="${test.reports}">
<include name="TEST-*.xml" />
</fileset>
<report todir="${test.reports}" />
</junitreport>
</target>
</project>
这是控制台上的输出:
[junit] Using CLASSPATH C:eclipseeclipse-java-helios-SR1-win32eclipseJunitWSSeleniumTrainingsrc;C:jarsjunit.jar;C:antlibant-launcher.jar;C:antlibant.jar;C:antlibant-junit.jar;C:antlibant-junit4.jar
[junit] Testsuite: com.tests.nav1
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 48.187 sec
[junit] ------------- Standard Output ---------------
[junit] testnav2
[junit] ------------- ---------------- ---------------
[junitreport] Using class org.apache.tools.ant.taskdefs.optional.TraXLiaison
[junitreport] Processing C:eclipseeclipse-java-helios-SR1-win32eclipseJunitWSSeleniumTrainingsrcreportsTESTS-TestSuites.xml to C:UserspmahajanAppDataLocalTempnull236099757
[junitreport] Loading stylesheet jar:file:/C:/ant/lib/ant-junit.jar!/org/apache/tools/ant/taskdefs/optional/junit/xsl/junit-frames.xsl
[junitreport] Transform time: 330ms
[junitreport] Deleting: C:UserspmahajanAppDataLocalTempnull236099757
BUILD SUCCESSFUL
Total time: 49 seconds
如果你看蚂蚁片段,有几个问题:
usefile=false
,这意味着没有输出文件被创建 formatter
type=brief
formatter
,仅打印失败测试的详细信息 todir
- 报告必须在<test>
标记中进入的文件夹 - 默认为当前文件夹。 这应该与<junitreport>
任务中使用的文件夹匹配。 您可以尝试使用以下更新的<junit>
部分...
<junit>
<classpath refid="classpath.test" />
<formatter type="xml"/>
<test name="com.tests.nav1" todir="${test.reports}"/>
</junit>
1 <target name="test" depends="compile">
2 <junit>
3 <classpath refid="classpath.test" />
4 <formatter type="brief" usefile="false" />
5 <test name="com.tests.nav1" />
6 </junit>
7 <junitreport todir="${test.reports}">
8 <fileset dir="${test.reports}">
9 <include name="TEST-*.xml" />
10 </fileset>
11 <report todir="${test.reports}" />
12 </junitreport>
13 </target>
上面的代码段需要更改。
蚂蚁JUnit任务文档给出了这个例子,可以帮助你(因为它显然确实是你想要实现的):
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement location="${build.tests}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<formatter type="plain"/>
<test name="my.test.TestCase" haltonfailure="no" outfile="result">
<formatter type="xml"/>
</test>
<batchtest fork="yes" todir="${reports.tests}">
<fileset dir="${src.tests}">
<include name="**/*Test*.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
在同一个虚拟机中运行my.test.TestCase,忽略给定的CLASSPATH; 如果此测试失败,则仅打印警告。 除了纯文本测试结果之外,对于此测试,XML结果将输出到result.xml。 然后,对于为$ {src.tests}定义的目录中的每个匹配文件,测试将在单独的VM中运行。 如果测试失败,构建过程将中止。 结果收集在名为TEST-name.txt的文件中,并写入$ {reports.tests}。
它在文档中指定, printsummary
可以on
和off
值,但它们在同一页面上的示例中使用了“ yes
,所以我认为它也被接受。