使用 Junit 测试 Lombok 注释

Testing Lombok annotations with Junit

我有一个使用 Lombok 注释的简单 Java 程序 - @Builder。 我正在使用 junit 测试我的代码,每次我 运行 我的单元测试时,尽管我正在测试我的整个代码,但我的覆盖率总是低于 50%。

我查看了 junit 生成的代码覆盖率,发现是 Lombok 注释导致覆盖率下降。

我看到类似的东西:

toString() - 0%
build() - 0%
MyMethod.MyMethodBuilder() - 0%

如何为 @Builder 注释测试这些方法?或者提高覆盖率的唯一方法是将那些从测试覆盖率中排除?

反编译class,其中包含lombok注解以查看lombok如何生成源代码,然后根据该代码编写junits。 例如在@ToString 的情况下,显式调用 class 对象上的 toString 方法,即 obj.toString();

从 JaCoCo v0.8.0 开始,您应该在项目的根目录中创建 lombok.config 文件并向其中添加以下内容:

lombok.addLombokGeneratedAnnotation = true

这将为 Lombok 生成的文件添加 @Generated 注释,JaCoCo 将知道应该忽略此类代码的代码覆盖率。

Credits to original author here

创建 lombok.config 文件并在下面添加文本:

config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true

config.stopBubbling = true 告诉 Lombok 这是根目录,它不应该在父目录中搜索更多配置文件(你可以有超过一个 lombok 配置文件在不同 directories/packages).

lombok.addLombokGeneratedAnnotation = true 告诉 Lombok 将 @lombok.Generated 注释添加到所有生成的方法中。

最好使用 pl.pojo 库来测试 pojo 模型 类。