呀!清单 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 行!
文章来源于领测软件测试网 https://www.ltesting.net/