如何在Lambda单元测试中抑制SpotBugs的RV_RETURN_VALUE_IGNORED告警
解决方案
方案1:在测试方法上添加抑制警告注解
将@SuppressFBWarnings("RV_RETURN_VALUE_IGNORED")直接标注在测试方法上,SpotBugs会忽略该方法内所有代码的对应警告:
@Test @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED") public void testBuilder_nullInput() { assertThatThrownBy(() -> ImmutableEmailAddress.of(null)) .isExactlyInstanceOf(NullPointerException.class); }
方案2:用匿名内部类替代Lambda表达式
抑制注解可作用于匿名内部类的方法体,把Lambda替换为Callable的匿名实现,并在call方法上添加注解:
@Test public void testBuilder_nullInput() { assertThatThrownBy(new Callable<EmailAddress>() { @Override @SuppressFBWarnings("RV_RETURN_VALUE_IGNORED") public EmailAddress call() throws Exception { return ImmutableEmailAddress.of(null); } }).isExactlyInstanceOf(NullPointerException.class); }
方案3:全局配置SpotBugs忽略测试类的该警告
在SpotBugs的过滤配置文件(如findbugs-exclude.xml)中添加规则,指定忽略目标测试类的RV_RETURN_VALUE_IGNORED错误:
<Match> <Class name="com.company.service.interfaces.types.contacts.EmailAddressTest"/> <Bug pattern="RV_RETURN_VALUE_IGNORED"/> </Match>
内容的提问来源于stack exchange,提问作者y2k-shubham
相关产品推荐
相关产品推荐

