【问题标题】:Verify that assertions have been called in Assertj验证是否在 Assertj 中调用了断言
【发布时间】:2018-03-21 12:53:59
【问题描述】:

我正在阅读使用 Assertj 来验证结果的测试类。 偶尔,我发现一个没有断言的 assertThat。

assertThat(object.getField());

是否可以在开发周期的某个地方识别这些类?我的第一个猜测是使用自定义声纳规则。虽然我不明白我应该如何定义这个方法应该跟一个断言(一个返回 void 的方法?)。

【问题讨论】:

    标签: java sonarqube assertj


    【解决方案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 注释的方法的返回值的检查。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多