#maven #testing #junit #code-coverage #cobertura
#maven #тестирование #junit #покрытие кода #cobertura
Вопрос:
Я использовал mvn cobertura: cobertura для создания этого отчета о тестовом покрытии cobertura JUnit. Кто-нибудь может объяснить мне, что означают цифры рядом с номером строки? Спасибо.
Ответ №1:
Эти цифры соответствуют тому, сколько раз эта строка выполнялась во время ваших тестов. Используя простой пример:
public class MyClass {
public void methodA(){
System.out.println("Method a");
}
public void methodB(){
System.out.println("Method b");
}
}
С некоторыми тестами:
public class MyClassTest {
@Test
public void testMethodA(){
final MyClass x = new MyClass();
x.methodA();
}
@Test
public void testMethodB(){
final MyClass x = new MyClass();
x.methodB();
}
}
Я получу следующий отчет, показывающий, что я дважды сконструировал свой тестовый объект и по одному разу запустил каждый метод:
Если я добавлю @Ignore
аннотацию к testMethodB
, вместо этого будет создан следующий отчет, показывающий, что я создал свой класс только один раз и не выполнял строки внутри methodB
при тестировании:
Цвет связан с покрытием. Он будет отображаться красным, когда нет теста, который охватывает эту строку или ветвь.
Редактировать — Что касается вашего вопроса в комментариях, возможно, отсутствует покрытие из-за того, что не проверены все условия. Например, рассмотрим этот метод:
public void methodB(final boolean testOne, final boolean testTwo){
if(testOne || testTwo){
System.out.println("Method b");
}
System.out.println("Done");
}
и этот тест:
@Test
public void testMethodB(){
final MyClass x = new MyClass();
x.methodB(true, false);
x.methodB(true, true);
}
в итоге вы получите следующий отчет о тестировании. Причина этого в том, что, хотя вы выполнили эту строку в тесте (фактически, 2 раза), я не протестировал все перестановки моего условия, поэтому в отчете будет показано, что у меня отсутствует покрытие.
Комментарии:
1. Почему я вижу какую-то строку, которую я вызывал много раз, но она все еще показывает красный цвет? Похоже, что это все операторы условий, означает ли это, что я не охватил все условия? Спасибо.
2. Обновил мой ответ. Трудно сказать из-за скриншота, но я предполагаю, что вы тестируете не все перестановки ваших условных обозначений, поэтому в отчете отображается недостающее покрытие.