我在我的Java项目中使用lombok
使用@Getter
和@Setter
注释注释我的对象的私有成员变量。我们知道那些吸气剂和固定剂会按预期工作。因此,我们并不需要对这些进行单元测试。但是,这会降低单元测试中代码的code coverage
。
有没有办法告诉单元测试引擎不需要测试lombok生成的getter和setter?
答案 0 :(得分:4)
从Lombok 1.16.14开始,所有生成的方法都将使用@lombok.Generated
进行注释。
您可以将它们从Cobertura测试报告中排除:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<instrumentation>
<ignoreMethodAnnotation>lombok.Generated</ignoreMethodAnnotation>
</instrumentation>
</configuration>
</plugin>
披露:我是龙目岛的开发者。
NB。目前,Lombok 1.16.14尚未发布。您可以下载包含此修复程序的edge release。
答案 1 :(得分:3)
自从Cobertura 2.0以来,如果它只是关于getter和setter,你可以设置ignoreTrival开关:
Cobertura Changelog - 新的--ignoreTrivial开关告诉Cobertura 忽略覆盖率报告中的以下内容:Getter方法 只需读取一个类字段;设置类字段的Setter方法; 仅设置类字段并调用超类的构造函数 构造
如果您希望更具体地忽略方法,您还可以使用ignoreMethodAnnotation开关:
Cobertura Changelog - 用于新的--ignoreMethodAnnotation开关 指定一个注释,当一个方法出现时,它将导致 Cobertura忽略了覆盖率报告中的方法
或者,来自maven插件:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<formats>
<format>xml</format>
<format>html</format>
</formats>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
<excludes>
<exclude>**/some/trivial/classes/**</exclude>
</excludes>
</instrumentation>
</configuration>
<executions>
<execution>
<goals>
<goal>clean</goal>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>