可以將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
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文件如下: