關于這些類型的工具,要牢記的要點是:最適宜應用于通過測試更新舊代碼。當構建新項目時,它們的作用不大。
為什么會這樣呢?因為新項目應該與項目上的單元測試是一前一后構建的。開發單元測試是構建設計的強有力的方法;針對組件的 API 就是在編寫測試時隱式地為它們設計的。此外,以這種風格進行設計向設計師提供了即時的反饋。糟糕的設計將非常難于編寫測試!并且,任何分析工具在確定為程序編寫什么測試這方面,都很難做得象設計師那樣好。
第二種分析工具分析程序及其單元測試,并確定測試能在多大范圍內覆蓋程序。與剛才提到的第一類工具不同,此類工具對每個項目都是有用的。實際上,極端編程團隊可以考慮將此類工具集成到他們的代碼提交過程中。那么,他們不僅能夠防止代碼在通過所有測試之前被提交,而且可以防止代碼在未經測試的情況下提交!不僅懶惰會導致測試覆蓋范圍偏小,錯誤也可能導致同樣后果,因此,此類強制措施對任何技能(和完整性)級別的程序員都有用。
Clover 是一種可以執行此類分析的新的并且特別有希望的工具。Clover 是 Ant 的插件,Ant 是make的流行的、全 Java 的替代物。Clover 是商業工具,但它可以免費用于開放源碼項目。
Clover 分兩階段過程進行工作。首先,它在編譯時檢測代碼。然后,在測試時將有關測試的運行信息寫到用來生成報告的數據庫中(通過 GUI、網頁或在控制臺中)。
將 Clover 集成到使用 Ant 的現有項目中很簡單。這涉及調整項目的 build.xml 文件以添加幾個在編譯、記錄測試和生成報表期間檢測代碼的目標。例如,假定我們有一個帶構建和編譯目標的 build.xml 文件。我們所必須做的全部工作是將 Clover JAR 文件放到我們的 Ant 庫目錄中,并如下所示擴展 build.xml 文件(Clover 用戶指南中提供了這些和類似于 Ant 目標的信息;為了方便,我在這里包括了它們):
清單 3. 擴充 Ant build.xml 文件以使用 Clover
<property name="clover.initstring" value="/tmp/mycoverage.db"/><target name="with.clover">
<property name="build.compiler"
value="org.apache.tools.ant.taskdefs.CloverCompilerAdapter"/>
</target>
<path id="clover.classpath">
<pathelement path="<CLOVER_HOME>/lib/clover.jar"/>
<pathelement path="<CLOVER_HOME>/lib/velocity.jar"/>
</path>
<target name="clover.report">
<java classname="com.cortexeb.tools.clover.reporters.html.HtmlReporter">
<arg line="--outputdir /tmp/clover_html --showSrc --initstring
$\{clover.initstring\} --title 'My Project'"/>
<classpath refid="clover.classpath"/>
</java>
</target>
特性clover.initstring指定了一個文件,有關 Clover 覆蓋范圍的數據將寫入這個文件中。目標with.clover用來在執行其它目標(如compile和test)時打開 Clover。clover.report目標用來接收累積的覆蓋范圍數據并生成報告。
文章來源于領測軟件測試網 http://www.kjueaiud.com/