空的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>
    

    上面的代码段需要更改。

  • 您必须在第5行中指定目录选项(例如todir = $ {data.reports})
  • 在第8行中,指定的目录必须为data.reports。
  • 第11行必须包含带有值框的选项格式(format =“frames”)。

  • 蚂蚁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可以onoff值,但它们在同一页面上的示例中使用了“ yes ,所以我认为它也被接受。

    链接地址: http://www.djcxy.com/p/86085.html

    上一篇: Empty Junit reports from ant

    下一篇: JUnit test for System.out.println()