產生測試報告


可以將JUnit的測試過程在Ant建構的過程訊息中顯示出來,只要加入<formatter>標籤設定即可:
    ....
    <target name="test" depends="compile">
        <junit printsummary="yes">
            <formatter type="plain" usefile="false"/>
            <batchtest>
                <fileset dir="\${src.dir}" includes="**/*Test.java"/>
            </batchtest>
            <classpath>
                <pathelement location="\${bin.dir}"/>
                <pathelement location="\${junit.dir}"/> 
            </classpath>
        </junit>
    </target>
    ....

一個執行的訊息範例如下:
...
test:
    [junit] Running cc.openhome.AbcTest
    [junit] Testsuite: cc.openhome.AbcTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.019 sec
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.019 sec
    [junit]
    [junit] Testcase: testAbc took 0.005 sec
    [junit] Running cc.openhome.CalculatorTest
    [junit] Testsuite: cc.openhome.CalculatorTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.005 sec
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.005 sec
    [junit]
    [junit] Testcase: testPlus took 0.002 sec
    [junit] Testcase: testMinus took 0 sec
...

usefile屬性預設值為true,會自動幫您將產生的結果儲存在檔案中,預設是TEST-*.txt,儲存於執行ant指令的目錄,其中*是您的測試案例類別名稱,有幾個測試類別就產生幾個.txt,可以在<test>或<batchtest>上使用todir屬性指定儲存位置。就上例而言,其產生的報告檔案TEST-cc.openhome.CalculatorTest.txt內容如下:
Testsuite: cc.openhome.CalculatorTest
Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.005 sec

Testcase: testPlus took 0.001 sec
Testcase: testMinus took 0 sec

<formatter>標籤還可以設定將測試的結果,以XML文件儲存下來,只要指定type屬性為xml即可,會將測試的結果儲存至report目錄中,檔案名稱為TEST-*.xml,*是您的測試案例類別名稱。

以將測試結果所產生的XML文件轉換為HTML文件,<junitreport>標籤使用 XSLT將XML文件轉換為HTML文件,一個撰寫的例子如下所示:
<project name="example" default="report"> 
<property name="src.dir" value="src"/>
<property name="bin.dir" value="bin"/>
<property name="report.dir" value="report"/>
<property name="junit.dir" value="lib/junit-4.8.2.jar"/>

<target name="clean">
<delete dir="\${bin.dir}"/>
<delete dir="\${report.dir}"/>
</target>

<target name="prepare" depends="clean">
<mkdir dir="\${bin.dir}"/>
<mkdir dir="\${report.dir}"/>
</target>

<target name="compile" depends="prepare">
<javac srcdir="\${src.dir}" destdir="\${bin.dir}">
<classpath>
<pathelement location="\${junit.dir}"/>
</classpath>
</javac>
</target>

<target name="test" depends="compile">
<junit printsummary="yes">
<formatter type="xml"/>
<batchtest todir="\${report.dir}">
<fileset dir="\${src.dir}" includes="**/*Test.java"/>
</batchtest>
<classpath>
<pathelement location="\${bin.dir}"/>
<pathelement location="\${junit.dir}"/>
</classpath>
</junit>
</target>

<target name="report" depends="test">
<junitreport todir="\${report.dir}">
<fileset dir="\${report.dir}">
<include name="TEST-*.xml"/>
</fileset>
<report format="frames" todir="\${report.dir}/html"/>
</junitreport>
</target>
</project>

<include>設定搜尋TEST-*.xml文件,將之轉換為HTML文件,而最後的結設定儲存至 report/html/目錄下,format屬性中設定HTML文件具有框架,如果不設定這個屬性則HTML報告文件就不具有框架,上例所產生的 HTML文件如下: