测试lombok的@utilityplass自动生成的代码

qlckcl4x  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(317)

我有一个用 @UtilityClass 这样地

@UtilityClass
public class myUtilClass {
...
}

jacoco没有完全覆盖这个类,因为注解创建了自动生成的代码 @UtilityClass . 理想情况下,我不想更改任何配置文件来忽略自动生成代码。如何测试此代码?

cwxwcias

cwxwcias1#

由生成的唯一“可覆盖”代码 @UtilityClass 在构造函数中:

private MyUtilClass() {
    throw new UnsupportedOperationException("This is a utility class and cannot be instantiated");
}

因为这是一个 private 永远不应该调用的构造函数,您不能定期测试它。
如果您真的想调用它,可以使用一些丑陋的反射代码:

Constructor<MyUtilClass> constructor;
constructor = MyUtilClass.class.getDeclaredConstructor();
constructor.setAccessible(true);
constructor.newInstance();

但你不应该仅仅为了报道而这样做。拥有高覆盖率通常是一个好主意,但如果你不得不牺牲好的测试标准,那就不行了。
我建议您建议jacoo忽略lombok的代码,将这一行添加到 lombok.config 文件:

lombok.addLombokGeneratedAnnotation = true

你不必为整个项目配置这个。如果你只把这个文件放到 MyUtilClass ,jacoco将只忽略此包中生成的代码。

相关问题