現在已經編寫了一些測試,如何確定所有這些測試執行什么 呢?幸運的是,此問題可由像 Cobertura 這樣的代碼覆蓋工具來解答。代碼覆蓋工具可報告測試覆蓋率 —— 以行覆蓋或分支覆蓋形式表示 —— 它表示測試運行時所涉及的代碼量。
清單 8 展示了一個 Ant 腳本。該腳本使用 Cobertura 生成一份關于代碼覆蓋率的 HTML 報告,代碼覆蓋率通過運行一系列 JUnit 測試獲得:
清單 8. 使用 Ant 和 Cobertura 報告代碼覆蓋率
<target name="instrument-classes">
<mkdir dir="${instrumented.dir}" />
<delete file="cobertura.ser" />
<cobertura-instrument todir="${instrumented.dir}">
<ignore regex="org.apache.log4j.*" />
<fileset dir="${classes.dir}">
<include name="**/*.class" />
<exclude name="**/*Test.class" />
</fileset>
</cobertura-instrument>
</target>
<target name="run-instrumented-tests" depends="instrument-classes">
<mkdir dir="${logs.junit.dir}" />
<junit fork="yes" haltonfailure="true" dir="${basedir}" printsummary="yes">
<sysproperty key=.net.sourceforge.cobertura.datafile" file="cobertura.ser" />
<classpath location="${instrumented.dir}" />
<classpath location="${classes.dir}" />
<classpath refid="test.class.path" />
<classpath refid="project.class.path"/>
<formatter type="plain" usefile="true" />
<formatter type="xml" usefile="true" />
<batchtest fork="yes" todir="${logs.junit.dir}">
<fileset dir="${test.component.dir}">
<patternset refid="test.sources.pattern"/>
</fileset>
</batchtest>
</junit>
</target>
Cobertura 產生了一個如圖 1 中所示的 HTML 報告。請注意行覆蓋和分支覆蓋的百分比是以包計算的?蓡螕裘恳粋包,獲得類級別的行百分比和路徑百分比,甚至能看到執行的源代碼行和它們執行的次數。
文章來源于領測軟件測試網 http://www.kjueaiud.com/