java Jacoco 0.8.0标记在所有开关情况下抛出和中断,尽管进行了测试
我在“Jacoco 0.8.0”节目中。我有一个switch语句,对所有情况都进行了测试。 Jacoco在switch语句中标记每种情况下的抛出和中断。默认大小写和break未标记。它为什么要标记这些
我环顾四周,发现像这样的帖子说,以前的版本没有对switch语句进行过滤: Why is JaCoCo not covering my String switch statements?
但我运行的是0.8.0,这是在这个修复之后,问题略有不同
MRE:
public class MyClass{
public void myMethod(String let) {
switch (let) {
case "A":
throw new Exception();
break;
default:
break;
}
}
}
每项测试:
@Test(expected = Exception.class)
public void testMyMethodA() {
MyClass class = new MyClass();
class.myMethod("A");
}
@Test(expected = Exception.class)
public void testMyMethodDefault() {
MyClass class = new MyClass();
class.myMethod("Z");
}
旗帜示例:
public class MyClass{
public void myMethod(String let) {
[YELLOW] switch (let) {
case "A":
[RED] throw new Exception();
[RED] break;
default:
break;
}
}
}
Jacoco将抛出语句和中断标记为未经测试。它将开关标记为已部分测试。我希望这些都能被涵盖
# 1 楼答案
首先是你的MRE
不能由
因为以下错误
如果你看一下JaCoCo homepage,你会发现0.8.0已经有两年的历史了,最新版本是0.8.4
JaCoCo changelog在https://www.jacoco.org/jacoco/trunk/doc/changes.html页的通常位置包含
例如
JaCoCo 0.8.4生成以下预期报告
根据经验和引用JaCoCo release announcements