【发布时间】:2020-09-07 12:15:13
【问题描述】:
我有一个简单的类叫做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 的部分没有被测试。所以我假设我应该在覆盖报告中看到这部分没有被覆盖。但这就是我得到的:
即使代码完全相同,但仅基于代码的结构,我得到的结果也不同。当一条线的一部分没有被实际覆盖时,我如何才能指示它没有被覆盖?
【问题讨论】:
标签: java testing intellij-idea test-coverage