编辑:所以看起来 JeffStorey 链接到错误是正确的。启用断言后,编译器将生成额外的代码。最终创建了 1 个额外的无法访问的分支。
我的方法构造函数之一有这些断言
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);
}
再次与价值观
Board (-4 , 2)
和Board (2, 2)
因此,我测试了断言和通过的失败之处。如果我没记错的话,它涵盖了所有情况,但是使用代码覆盖工具 eclEmma Eclipse 插件它声称它没有被完全覆盖。我已经有-ea
eclipse 的覆盖参数,因此启用了断言。我的测试是否不完整,或者断言不能被完全覆盖?谢谢。