Какой цвет и номер рядом с номером строки в отчете cobertura

#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. Обновил мой ответ. Трудно сказать из-за скриншота, но я предполагаю, что вы тестируете не все перестановки ваших условных обозначений, поэтому в отчете отображается недостающее покрытие.