我要覆盖所有的分支机构。我创建了一个带有多个if... else的哑类,并使用所有分支条件测试它以测试覆盖率。Eclipse报告了1/4个分支缺失和2/4个分支缺失。但为什么会这样呢?失踪的树枝在哪里?
带有if... else条件的类:
public class Coverage {
public void function(Object o1, Object o2) {
if (o1 == null && o2 == null) {
System.out.println(o1 + " " + o2);
} else if (o1 != null && o2 == null) {
System.out.println(o1 + " " + o2);
} else if (o1 == null && o2 != null) {
System.out.println(o1 + " " + o2);
} else if (o1 != null && o2 != null) {
System.out.println(o1 + " " + o2);
}
}
}
测试:
public class CoverageTest {
Coverage c;
@BeforeEach
public void beforeEach() {
c = new Coverage();
}
@Test
public void testFunction_null_null() {
c.function(null, null);
}
@Test
public void testFunction_object_null() {
c.function(new Object(), null);
}
@Test
public void testFunction_null_object() {
c.function(null, new Object());
}
@Test
public void testFunction_object_object() {
c.function(new Object(), new Object());
}
}
Eclipse覆盖率报告:
1条答案
按热度按时间nxowjjhe1#
遗漏的分支是死代码。
每个 if 条件都包含两个布尔条件,从而产生四个分支。但是只有在前两个 if 条件中,布尔条件的所有组合都被测试覆盖。最后两个 if 语句包含不必要的条件,这些条件已经在前面的 if 语句中处理过了:
或者进一步简化: