Мы используем Cobertura для показателей покрытия кода модульного тестирования Spring-Boot Restful API.
У нас была похожая ситуация. Чтобы игнорировать некоторые классы из отчетов о метриках покрытия кода модульного тестирования для классов с собственными запросами гибернации, которые не могут быть проверены модулем с помощью классов JPATest (как в БД памяти) ... по любой причине, если вы нужно cobertura игнорировать некоторые из ваших классов из этих метрик, а затем сделать следующее ...
pom.xml
<build>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
<ignoreMethodAnnotation>com.thermofisher.micro.common.annotation.CoberturaIgnore</ignoreMethodAnnotation>
</instrumentation>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
<ignoreMethodAnnotation>com.thermofisher.micro.common.annotation.CoberturaIgnore</ignoreMethodAnnotation>
</instrumentation>
</configuration>
</plugin>
</plugins>
</reporting>
Примечание
package com.any.package.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.PACKAGE})
public @interface CoberturaIgnore {}
Использовать аннотацию:
package com.any.package.repository;
import com.any.package.annotation.CoberturaIgnore;
@CoberturaIgnore
@Repository
public class SequenceIdRespositoryImpl implements SequenceIdRespository {
@PersistenceContext
private EntityManager entityManager;
@CoberturaIgnore
@Override
public long getUserContactKey() {
Query query = entityManager.createNativeQuery("select user_key_seq.nextval from dual");
return getKey(query);
}
}