報告左邊是包名,以及包下邊的類;右邊是主窗口,顯示當前這個Money類的測試覆蓋率,我們可以通過行號來查看到15、16、17行執行了156次,下邊還會有兩行一次也沒有執行過,所以造成這個類整體的測試覆蓋率不是100%。
四、重構測試代碼實現百分百測試覆蓋率
我們總是希望做單元測試的時候,讓代碼的測試覆蓋率盡可能的達到100%,所以我們需要重構測試代碼。從分析得知,第40行雖然執行了27次,但是從來沒有測試if的判斷條件為true的情況,所以我們要添加測試用例,測試isZero()返回為true的情況!因此,我們修改測試代碼MoneyTest.java文件,在前邊初始化地方加上一個Money實例,如下:
public class MoneyTest extends TestCase {
private Money f12CHF;
private Money f14CHF;
private Money f7USD;
private Money f21USD;
private Money f0USD;
在setup方法里添加:
protected void setUp() {
f12CHF= new Money(12, "CHF");
f14CHF= new Money(14, "CHF");
f7USD= new Money( 7, "USD");
f21USD= new Money(21, "USD");
f0USD = new Money(0, "USD"); //sincky
在后加上一個測試用例:
public void testMoneyEqualsZero() {
assertTrue(!f0USD.equals(null));
IMoney equalMoney = new Money(0, "CHF");
assertTrue(f0USD.equals(equalMoney));
}
之后,我們重新編譯,測試,創建報告,即執行下列命令:
>ant clean
>ant clover compile
>ant test
>ant report
這時候再打開新的html報告,看到如下效果覆蓋率已經到達100%:
完畢,如果能進展到這一步,相信你已經對使用junit、ant、clover做java的單元測試,已經到了一個新的飛越!如果有興趣,你還可以把junit報告和clover報告一并輸出,以更好的為企業開發中使用這種工作模式!
文章源碼均來自clover網站,本人稍做修改。