Tha*_*ran 5 java junit4 jacoco sonarqube
我正在为我的项目编写代码覆盖率并遇到奇怪的行为。我有这样的功能
public void testException(int i) throws Exception {
if (i == 0) {
throw new Exception("exception");
}
}
Run Code Online (Sandbox Code Playgroud)
和测试用例
@Test
public void testException() {
try {
mapper.testException(0);
fail("Wrong");
} catch (Exception ex) {
assertEquals("exception", ex.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
通过maven()运行测试用例后mvn sonar:sonar
,该分支将被Sonar覆盖。但是,如果测试的函数是这样的
public void testException(int i) throws Exception {
if (i == 0) {
throwException();
}
}
public void throwException() throws Exception {
throw new Exception("exception");
}
Run Code Online (Sandbox Code Playgroud)
那么if
虽然函数的内部throwException
实际上被执行了,但分支没有被覆盖。有办法克服这个问题吗?我需要 100% 完成全班课程