【问题标题】:How to fix Lombok coverage in a multi-module maven project如何在多模块 Maven 项目中修复 Lombok 覆盖
【发布时间】:2020-08-03 09:40:03
【问题描述】:

我有一个包含多个 maven 模块的项目,每个模块都实现了单元测试。它们通过父模块相互依赖。我正在使用 Lombok 为我的模型生成所有样板代码,并且通过单元测试,我没有涵盖这些模型上的 @Getters 和 @Setters。

我知道,要排除这些并改善您的覆盖范围,您可以添加一个设置为 lombok.addLombokGeneratedAnnotation = true 的 lombok.config。我在父模块中添加了这个,但这似乎不起作用。有没有办法为所有模块配置这个?

我还尝试在所有模块中添加不同的 lombok.config 文件,但仍然无法正常工作。这个问题主要影响 SonarQube 的覆盖范围,因为它不知道应该忽略这些未使用的 getter 和 setter。

PS:在成为多模块项目之前,该项目是一个简单的 maven 项目,并且这个 lombok.config 有效,覆盖率很好。将项目迁移到多模块方法后,单元测试中没有任何变化。

【问题讨论】:

  • 我是否理解正确,您的意图是涵盖除 getter 和 setter 之外的所有方法(包括使用 lombok 注释生成的方法)?
  • 我认为您的错误是假设更改父项目的 lombok 配置会以任何方式影响依赖项目的类生成结果。不是这种情况。 Lombok 只会在相应项目本身 (projectlombok.org/features/configuration) 中查找 lombok.config。由“子”项目生成的类文件将在构建时忽略“父”中的配置。
  • @TreffnonX 不,我的意图不是那样。单元测试涵盖了服务中的所有业务逻辑,根本不使用模型中的 getter 和 setter,因此,sonar 在覆盖率中抱怨这一点。我知道这可以通过使用这个配置文件配置 Lombok 来解​​决,但是当有多个 maven 模块时这似乎不起作用......

标签: java maven code-coverage lombok multi-module


【解决方案1】:

任何lombok.config 文件只会影响该目录或以下目录中的java 文件。超级项目中的配置文件不会影响子项目或模块中的文件,除非这些源路径低于父项目的源路径,我认为情况并非如此。

lombok.addLombokGeneratedAnnotation = true 行需要位于每个源目录中的每个 lombok.config 文件中才会受到影响。

【讨论】:

    猜你喜欢
    • 2019-08-20
    • 2017-01-10
    • 2017-06-24
    • 2011-09-16
    • 1970-01-01
    • 2014-10-03
    • 2015-01-10
    • 1970-01-01
    • 2014-11-12
    相关资源
    最近更新 更多