我有一个名为Someclass
的简单类:
public class Someclass {
public int value = 0;
public void inc() {
value++;
}
public void dec()
{
if (isBiggerthanFive()) value--;
value--;
}
private boolean isBiggerthanFive() {
return value > 5;
}
}
还有一个名为TheTest
的测试类:
class TheTest {
Someclass t;
@BeforeEach
void setUp() {
t = new Someclass();
}
@Test
public void whenNewTestIsCreated_ValueIsZero()
{
assertEquals(t.value,0);
}
@Test
public void whenIncIsCalledWithValueOfZero_ValueIsOne()
{
t.inc();
assertEquals(t.value,1);
}
@Test
public void whenDecIsCalledWithValueOfZero_ValueIsnegativeone()
{
t.dec();
assertEquals(t.value,-1);
}
}
请注意函数dec
的结构以及整个if条件和语句如何在同一行上。在测试中,当值大于5时,这部分递减2而不进行测试。因此,我认为我应该在覆盖率报告中看到这一部分没有涉及。但这就是我得到的:
即使代码是完全相同的,但仅基于代码的结构,我还是会得到不同的结果。当没有被手动覆盖时,如何指示行的一部分未被覆盖?