提高龙目岛@Data代码覆盖率

我正在为我的项目编写单元测试,并试图实现至少80%的代码覆盖率。问题是我正在使用龙目岛的注释来生成 getter 和 setter,当我运行我的单元测试时,所有这些 getter 和 setter 以及其他方法(如 、等)都被遗漏了,我的代码覆盖率受到了打击。是否有任何解决方法。我一直在搜索很多关于此的内容,但无法找到任何可以提供帮助的东西。任何这方面的帮助将不胜感激。@DatatoStringequalshashcode

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


答案 1

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

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

就是这样。Jacoco将过滤龙目岛自动生成的方法,如果您尽最大努力,您的代码覆盖率可能接近100%:))


答案 2

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

如果你只需要龙目岛自动创建 getter 和 setters,你可以只使用 @Getter@Setter 注释,而不是@Data

此外,要将 Lombok 创建的方法排除在此覆盖范围之外,您可以在根目录中创建一个 lombok.config 文件,并具有以下两行:

config.stopBubbling = true
lombok.addLombokGeneratedAnnotation = true

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


推荐