添加Lombok @Builder后测试覆盖率异常的排查与解决
Lombok @Builder导致测试覆盖率异常的问题解决
问题原因
添加@Builder注解后,IntelliJ的覆盖率工具将@Builder注解所在的行判定为未覆盖的用户代码行。尽管Lombok已为生成的Builder类、方法添加了@lombok.Generated注解,但注解本身所在的行并没有被标记为生成代码,因此覆盖率工具会将其纳入统计,导致显示“0% (0/1)”的异常结果——这里的“1”指的就是@Builder注解所在的行。
解决方案
方案1:配置IntelliJ识别Lombok的@Generated注解
IntelliJ默认不会自动识别lombok.Generated作为生成代码的标记,需要手动添加:
- 打开IntelliJ IDEA的设置(File > Settings,或快捷键Ctrl+Alt+S)
- 导航到
Build, Execution, Deployment > Coverage - 在
Generated code区域,点击Add按钮,输入lombok.Generated并确认 - 重新运行覆盖率测试,此时IDE会忽略所有带有该注解的生成代码,@Builder注解所在行也会被正确排除出覆盖率统计
方案2:切换使用Javax标准的@Generated注解
修改你的lombok.config文件,替换原有配置:
config.stopBubbling = true lombok.addJavaxGeneratedAnnotation=true
IntelliJ默认识别javax.annotation.Generated,Lombok会为所有生成代码添加该注解,覆盖率工具会自动忽略这些代码,注解所在行也不会被统计为未覆盖。
方案3:临时绕过(不推荐)
如果只是需要临时让覆盖率显示正常,可以在测试用例中显式调用Builder的完整流程:
@Test void testBuilder() { User user = User.builder().id(1).name("test").build(); assertNotNull(user); }
这种方法只是让IDE认为注解行被“覆盖”,并未从根源解决生成代码被统计的问题,仅作为临时应急手段。
内容的提问来源于stack exchange,提问作者Julien Kronegg
相关产品推荐
相关产品推荐

