上面我們介紹了如何用junit和HttpUnit編寫單元測試用例,那如何確定我們編寫的單元測試用例能不能完整地測試我們的代碼呢?這就需要看看我們的單元測試用例對我們代碼的覆蓋測試率了。覆蓋測試是衡量測試質量的一個重要指標。在對一個軟件產品進行了單元測試、組裝測試、集成測試以及接受測試等繁多的測試之后,我們能不能就此對軟件的質量產生一定的信心呢?這就需要我們對測試的質量進行考察。如果測試僅覆蓋了代碼的一小部分,那么不管我們寫了多少測試用例,我們也不能相信軟件質量是有保證的。相反,如果測試覆蓋到了軟件的絕大部分代碼,我們就能對軟件的質量有一個合理的信心。
3.2 如何使用EclEmma進行覆蓋測試
EclEmm是一個幫助開發人員考察測試覆蓋率的優秀的 Eclipse 開源插件, EclEmma為用戶提供圖形界面以及對集成開發環境的支持,安裝 EclEmma 插件的過程和大部分 Eclipse 插件相同,我們既可以通過 Eclipse 標準的 Update 機制來遠程安裝 EclEmma 插件,也可以從站點http://sourceforge.net/projects/eclemma/下載 zip 文件并解壓到 eclipse 所在的目錄中。安裝完成并重新啟動 Eclipse 之后,工具欄上應該出現一個新的按鈕。
下面我們用EclEmma運行我們上面Junit的例子,看看測試覆蓋率是多少,點擊這個新的按鈕,運行Junit Test。
可以看到EclEmma 用不同的色彩標示了源代碼的測試情況。其中,綠色的行表示該行代碼被完整的執行,紅色部分表示該行代碼根本沒有被執行,而黃色的行表明該行代碼部分被執行??梢娢覀兊臏y試用例對邏輯類LogicClass的測試達到了100%。
有時候想一次運行中覆蓋所有的代碼通常比較困難,如果能把多次測試的覆蓋數據綜合起來進行察看,那么我們就能更方便地掌握多次測試的測試效果。EclEmma 提供了這樣的功能。通過 Coverage 視圖的工具按鈕來結合多次覆蓋測試的結果。在彈出框中點擊OK按鈕,就可以看到多次測試對代碼的測試覆蓋率了。
4. 如何使用Ant批量運行junit單元測試用例并生成測試報告
我們編寫完單元測試用例以后,我們就可以運行單元測試用例來檢查我們的代碼有沒有bug,以后如果代碼發生改變,我們就可以運行單元測試用例來檢查我們的修改有沒有帶進新的bug。但如果每個測試用例都要手工運行那就比較繁瑣了,下面我們介紹如何使用ant進行批量測試和生成測試報告。
4.1 什么是ant:
Ant是一個類似make的、用java實現的構建工具,項目的構建、包裝和發布過程中幾乎每一件事都可以由Ant的任務來處理。Ant憑借出色的易用性、平臺無關性以及對項目自動測試和自動部署的支持,已成為眾多項目構建過程中不可或缺的獨立工具,并已經成為事實上的標準。
4.2 如何使用ant批量運行junit測試用例并生成測試報告:
隨著項目的進展和項目的規模在不斷的膨脹,為了保證項目的質量,有計劃的執行全面的單元測試是非常有必要的。利用Ant集成Junit可以通過配置批量運行所指定的測試用例并生成測試報告,可以讓開發人員及時發現代碼中所隱藏的bug,及時進行修改,極大的提高工作效率,從某種意義上做到持續集成。
Ant 內置了對 JUnit 的支持,它提供了兩個 Task:junit 和 junitreport,分別用于執行 JUnit 單元測試和生成測試結果報告。使用這兩個 Task 編寫構建腳本,可以很簡單的完成批量運行單元測試并生成測試報告的任務。
首先把junit的包加載到ant的編譯目錄下:打開 Eclipse 的window菜單,選擇reference選項界面,選擇 Ant -> Runtime 選項,將 Junit 4.* 的 JAR 文件添加到 Classpath Tab 頁中的 Global Entries 設置項里。還有記得檢查一下 Ant Home Entries 設置項中的 Ant 版本是否在 1.7.0 之上,如果不是請替換為最新版本的 Ant JAR 文件,Eclipse3.2內置的ant版本是1.65,eclipse3.4內置的ant版本是1.70,所以如果我們使用的junit版本是4以上的,最好用eclipse3.4。
接下來是編寫 Ant 構建腳本 build.xml。雖然這個過程稍嫌繁瑣,但這是一件一勞永逸的事情。
把此build.xml文件放到工程的根目錄下,修改test屬性的值為我們要運行的單元測試用例的包路徑名,如果為空默認運行工程所有的單元測試,在Eclipse下打開此build.xml文件,在右邊的outline視圖下右擊ant的 junit任務,選擇Run As Ant Build,就可以運行此ant文件的junit任務,然后我們就可以在Eclipse的控制臺上看到Ant任務的執行信息,任務執行完后,就會在工程的 report目錄下的“framework-${DSTAMP}-${TSTAMP}”臨時文件夾下生成html類型的測試報告。
原文轉自:http://www.uml.org.cn/Test/201001217.asp