我有maven 3,cobertura maven插件2.51和一些classe。 我需要知道我班级的考试报道。但我不想测试setter / getters。所以我只想忽略它们。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
<check>
<haltOnFailure>false</haltOnFailure>
<lineRate>55</lineRate>
<branchRate>60</branchRate>
<packageLineRate>60</packageLineRate>
<packageBranchRate>60</packageBranchRate>
<totalLineRate>60</totalLineRate>
<totalBranchRate>60</totalBranchRate>
</check>
<instrumentation>
<excludes>
<exclude>com/FileCopier*.*</exclude>
<exclude>com/FileCopierWithCamel*.*</exclude>
<exclude>com/Main*.*</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
<goal>cobertura</goal>
<goal>check</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
然后我添加以下忽略块
<ignores>
<!-- Ignore all setter and getter methods in your classes -->
<ignore>com.*.set*</ignore>
<ignore>com.*.get*</ignore>
<ignore>com.MyClass.getName</ignore>
</ignores>
但似乎不起作用。
我找到了这个链接: http://jira.codehaus.org/browse/MCOBERTURA-52 看起来这个问题大约是5岁。 我的问题有解决办法吗?
答案 0 :(得分:6)
如果它只是关于getter和setter,你可以设置ignoreTrival
开关:
Cobertura Changelog - 新
--ignoreTrivial
切换告诉Cobertura忽略了 覆盖率报告中的以下内容:简单的Getter方法 读一个类字段;设置类字段的Setter方法; 只设置类字段并调用超级字符串的构造函数 类构造函数。
如果您希望更具体地忽略方法,您还可以使用ignoreMethodAnnotation
开关:
Cobertura Changelog - 用于指定注释的新
--ignoreMethodAnnotation
开关, 当出现在一个方法上时,会导致Cobertura忽略 覆盖率报告中的方法。
文档:Documentation of ignoreMethodAnnotation(他们犯了一个小错误:他们定义CoberturaIgnore
注释,然后他们使用CoverageIgnore
)
pom.xml
中的示例:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
<ignoreMethodAnnotation>foo.bar.CoberturaIgnore</ignoreMethodAnnotation>
</instrumentation>
</configuration>
</plugin>
答案 1 :(得分:0)
我不知道忽略方法,但是您可以使用一个工具来自动生成getter和setter的单元测试,以便涵盖这些方法。我不知道这会解决你确切的问题,因为现在覆盖率低于预期,你的覆盖率会高于预期,但似乎总比没有好。
这里有一个关于这个的问题:Is there a Java unit-test framework that auto-tests getters and setters?
答案 2 :(得分:0)
我们正在使用Cobertura进行Spring-Boot Restful API单元测试代码覆盖率指标。
我们有类似的情况为了忽略单元测试代码覆盖度指标的一些类,使用hibernate本机查询报告类,这些查询无法使用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);
}
}