呀!清單 8 中的 HiddenObject
是有害的。與清單 7 中一樣,調用 doWork()
方法會導致 RuntimeException
:
package com.acme.someotherpackage.HiddenObject;
public class HiddenObject {
public static int doWork(){
//return 1;
throw new RuntimeException("surprise!");
}
}
但是我的確可以通過一個良好的測試捕獲這個異常!在清單 9 中,我編寫了另一個好的測試,以圖挽回我的超級明星光環:
package test.com.vanward.coverage.example02; import junit.framework.TestCase; import com.vanward.coverage.example02.AnotherBranchCoverage; public class AnotherBranchCoverageTest extends TestCase { public final void testBranchIt() { AnotherBranchCoverage clzzUnderTst = new AnotherBranchCoverage(); clzzUnderTst.branchIt(101); } } |
您對這個測試案例有什么想法?您也許會寫出更多的測試案例,但是請設想一下清單 7 中不確定的條件有不止一個的縮短操作會如何。設想如果前半部分中的邏輯比簡單的 int
比較更復雜,那么您 需要寫多少測試案例才能滿意?
現在,對清單 7、8、9 的測試覆蓋率的分析結果不再會使您感到驚訝。在圖 4 的報告中顯示我達到了 75% 的行覆蓋率和 100% 的分支覆蓋率。最重要的是,我執行了第 10 行!
文章來源于領測軟件測試網 http://www.kjueaiud.com/