验证是不是在 Assertj 中调用了断言
Posted
技术标签:
【中文标题】验证是不是在 Assertj 中调用了断言【英文标题】:Verify that assertions have been called in Assertj验证是否在 Assertj 中调用了断言 【发布时间】:2018-03-21 12:53:59 【问题描述】:我正在阅读使用 Assertj 来验证结果的测试类。 偶尔,我发现一个没有断言的 assertThat。
assertThat(object.getField());
是否可以在开发周期的某个地方识别这些类?我的第一个猜测是使用自定义声纳规则。虽然我不明白我应该如何定义这个方法应该跟一个断言(一个返回 void 的方法?)。
【问题讨论】:
【参考方案1】:SonarJava 具有规则 S2970“断言应该是完整的”,它可以检测 assertThat
而无需断言 AssertJ、Fest 和 Truth。
见:https://rules.sonarsource.com/java/RSPEC-2970
【讨论】:
【参考方案2】:如the AssertJ FAQ中所说:
由于在 2.5+ / 3.5+ 中引入并在 2.7+ / 3.7+ 中改进的
CheckReturnValue
注释,SpotBugs/FindBugs/ErrorProne 等静态代码分析工具现在可以检测到此类问题。
事实上,SpotBugs 很容易发现这个问题,因为我刚刚使用 AssertJ 3.9.0、Java 8 和 SpotBugs 3.1.1 进行了测试:
因此,如果您在静态分析工具中没有看到此警告,则可能是您禁用了使用带有 @CheckReturnValue
注释的方法的返回值的检查。
【讨论】:
以上是关于验证是不是在 Assertj 中调用了断言的主要内容,如果未能解决你的问题,请参考以下文章