【问题标题】:Java lombok unit tests for getters setters用于 getter setter 的 Java lombok 单元测试
【发布时间】:2017-06-03 06:09:20
【问题描述】:

我在我的 Java 项目中使用lombok 使用@Getter@Setter 注释来注释我的对象的私有成员变量。我们知道那些 getter 和 setter 会按预期工作。所以我们真的不需要对它们进行单元测试。但是,这会降低单元测试中代码的code coverage

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

【问题讨论】:

  • 1.您不应该仅仅为了提高覆盖率而编写 unittest。单元测试应为重构提供安全性并协助寻找错误。 getter/setter 上的单元测试不支持任何一个。
  • 2.具有 getter/setter 的类应该是 DTO。反过来,DTO 应该没有业务逻辑,因此没有单独的单元测试。

标签: java unit-testing code-coverage lombok


【解决方案1】:

从 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>

披露:我是 Lombok 开发人员。

注意。目前,Lombok 1.16.14 尚未发布。不过,您可以下载包含此修复程序的 edge release

【讨论】:

    【解决方案2】:

    从 Cobertura 2.0 开始,如果只是关于 getter 和 setter,你可以设置 ignoreTrival 开关:

    Cobertura 更新日志 - 新的 --ignoreTrivial 开关告诉 Cobertura 忽略覆盖率报告中的以下内容:Getter 方法 只需读取一个类字段;设置类字段的 Setter 方法; 仅设置类字段并调用超类的构造函数 构造函数

    如果您希望更具体地忽略方法,也可以使用 ignoreMethodAnnotation 开关:

    Cobertura 变更日志 - 新的 --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> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-02
      • 2017-06-24
      • 2011-06-26
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      相关资源
      最近更新 更多