Java lombok单元测试getter setters

时间:2017-01-18 18:15:24

标签: java unit-testing code-coverage lombok

我在我的Java项目中使用lombok使用@Getter@Setter注释注释我的对象的私有成员变量。我们知道那些吸气剂和固定剂会按预期工作。因此,我们并不需要对这些进行单元测试。但是,这会降低单元测试中代码的code coverage

有没有办法告诉单元测试引擎不需要测试lombok生成的getter和setter?

2 个答案:

答案 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>