提高 Lombok @Data 代码覆盖率

新手上路,请多包涵

我正在为我的项目编写单元测试,并试图实现至少 80% 的代码覆盖率。问题是我正在使用 lombok 的 @Data 注释来生成 getter 和 setter,当我运行我的单元测试时,所有这些 getter 和 setter 以及其他方法,如 toStringequals , hashcode 等都丢失了,我的代码覆盖率受到了影响。有没有解决方法。我一直在搜索这方面的很多东西,但一直找不到任何可以提供帮助的东西。对此的任何帮助将不胜感激。

我正在使用 Eclemma 进行代码覆盖率分析。

原文由 Varun Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.8k
2 个回答

首先,@Data注解是 @ ToString 、@ EqualsAndHashCode@Getter 、@ Setter 的组合。

如果您只需要 Lombok 自动创建 getter 和 setter,您可以只使用 @Getter@Setter 注释而不是 @Data

此外,为了让 Lombok 创建的方法不在此范围内,您可以在根目录中创建一个 lombok.config 文件,并包含以下两行:

 config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true

添加这一行后,当您转到 Sonar 时,您会看到这些类已被 100% 覆盖。

原文由 ahmetcetin 发布,翻译遵循 CC BY-SA 4.0 许可协议

0.8.0 版本 中,Jacoco 添加了对从报告中过滤掉所有用 @lombok.Generated 注释的方法的支持。您唯一需要更改的是使用以下设置将 lombok.config 添加到项目的根目录:

 config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true

  • config.stopBubbling = true 告诉 Lombok 这是你的根目录,它不应该在父目录中搜索更多的配置文件(你可以在不同的目录/包中有多个 lombok 配置文件)。
  • lombok.addLombokGeneratedAnnotation = true 将为所有 Lombok 生成的方法添加 @lombok.Generated 注释。

就是这样。 Jacoco 将过滤 Lombok 自动生成的方法,如果你尽力而为,你的代码覆盖率可能接近 100% :))

原文由 mladzo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题