Java 测试覆盖率:如何覆盖断言?
编辑:看来这个bug的链接是正确的。启用断言后,编译器将生成额外的代码。最后创建了一个额外的不可访问分支 我的一个方法构造函数具有这些断言Java 测试覆盖率:如何覆盖断言?,java,code-coverage,assert,eclemma,Java,Code Coverage,Assert,Eclemma,编辑:看来这个bug的链接是正确的。启用断言后,编译器将生成额外的代码。最后创建了一个额外的不可访问分支 我的一个方法构造函数具有这些断言 public Board(int w, int h) { assert w >= 0 : "PRE1: width should be >= 0 but is " + w; assert h >= 0 : "PRE2: height should be >= 0 but is "
public Board(int w, int h) {
assert w >= 0 : "PRE1: width should be >= 0 but is " + w;
assert h >= 0 : "PRE2: height should be >= 0 but is " + h;
}
我试着通过这样做来掩盖它
public void testInvalidBoardWidth() {
try {
Board badBoard = new Board(-2, 2);
fail();
} catch (AssertionError err) {
assertTrue(true);
}
}
@Test
public void testFailBoardHeight() {
try {
Board InvalidBoard = new Board(2, -4);
fail();
} catch (AssertionError err) {
assertTrue(true);
}
还有价值观
板(-4,2)
和板(2,2)
因此,我已经测试了断言和传递失败的地方。如果我没有弄错的话,它涵盖了所有情况,但是使用代码覆盖工具eclemmaeclipse插件,它声称它没有完全涵盖。我已经在eclipse的coverage参数中有了
-ea
,因此启用了断言。我的测试是否不完整,或者断言是否不能完全覆盖?谢谢。是的,你已经把一切都办妥了。这里只有3条路径:
- w<0&h>0
- h<0&w>0
- w>0&h>0
希望这能有所帮助。艾玛说的哪一部分不是covered@JeffStorey它说,董事会报告中的上述两项主张没有完全涵盖在内。它们仍然是黄色的,看起来被遮住了。你看到这个虫子了吗