У меня есть простой класс 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 и инструкция находятся в одной строке. В тесте эта часть уменьшения на 2, когда значение больше 5, не проверяется. Итак, я предполагаю, что я должен увидеть в отчете о покрытии, что эта часть не охвачена. Но вот что я получаю:
Когда вместо этого я оставляю статус на отдельной строке, я получаю правильные результаты:
Несмотря на то, что код полностью такой же, я получаю разные результаты, основанные только на структуре кода. Как я могу определить, что часть линии не покрыта, если она не покрыта полностью?