Я настроил плагин My Jacoco В моем проекте через maven.
Вот моя конфигурация jacoco
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<configuration>
<excludes>
</exclude>**/some/package/SomeClass*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>jacoco-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>CLASS</element>
<excludes>
<exclude>*Test</exclude>
</excludes>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>80%</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
Я выполнил тест и показал 94% покрытия для абстрактного класса, я протестировал этот абстрактный класс, используя его конкретную реализацию.
Когда я запускаю сборку maven
Я получаю следующую ошибку
Нарушено правило для класса my.package.AbstractParser.1: коэффициент покрытия строк равен 0,00, но ожидаемый минимум равен 0,80
Я пытался протестировать абстрактный класс с помощью фиктивногореализация в тесте все еще я получаю ту же ошибку
Может кто-нибудь сказать мне, что я делаю здесь не так.
РЕДАКТИРОВАТЬ: я выяснил причину сбоя
Я написал встроенную карту инициализации
return new HashMap<String, String>() {
{
put(input, "");
}
};
И охват показал 0% по этой части.так что мой тест не охватывал эту часть.
Но я устал
final Map<String, String> defaultMap = new HashMap<>();
defaultMap.put(input, "");
return defaultMap;
Пройдена сборка даже без покрытия новым кодом.Может кто-нибудь объяснить мне, почему это произошло с inline-инициализацией ???