Прежде чем этот вопрос будет помечен как дубликат, прочтите его. ;) Уже есть несколько вопросов об инструментах покрытия и тому подобном, однако это немного отличается от обычных (надеюсь).
Согласно Википедии, существует несколько различных вариантов «покрытия», которые затрагивают несколько различных аспектов термина «покрытие». .
Вот небольшой пример:
public class Dummy {
public int a = 0;
public int b = 0;
public int c = 0;
public void doSomething() {
a += 5;
b += 5;
c = b + 5;
}
}
public class DummyTest {
@Test
public void testDoSomething() {
Dummy dummy = new Dummy();
dummy.doSomething();
assertEquals( 10, dummy.c );
}
}
Как вы можете видеть, тест будет иметь покрытие 100% строк, утверждение о значении поля «c» будет охватывать это поле и косвенно также охватывать поле «b», однако в поле «a» нет покрытия утверждения. . Это означает, что тест покрывает 100% строк кода и гарантирует, что c содержит ожидаемое значение и, скорее всего, также b содержит правильное, однако a вообще не утверждается и может иметь совершенно неправильное значение.
Итак... теперь вопрос: есть ли инструмент, способный анализировать код (java) и создавать отчет о том, какие поля/переменные/что-то еще не были (прямо и/или косвенно) покрыты утверждением?
(хорошо, при использовании геттеров вместо общедоступных полей вы увидите, что getA() не вызывается, но это не тот ответ, который я хотел бы услышать;))