2

我正在使用 AssertJ 来测试 web,使用 fluentlenium 和范围报告来报告结果。

我在问题之前问过,但忘了提到 AssertJ 的使用。

提供的答案是扩展软断言并且它具有onAssertFailure功能。

AssertJ 软断言有类似的东西吗?还是有其他解决方案可以绕过它?

4

2 回答 2

2

在下一个 AssertJ 版本(2.5.0)中,您将可以访问所有软断言错误(请参阅此提交)。

希望能帮助到你

于 2016-06-03T04:58:32.700 回答
1

在 assertJ 的未来版本中添加了一个方法wasSuccess()(如 git 历史记录所示),但在当前版本中尚不可用。

添加此方法后,您可以执行以下操作:

public class AssertjSoftAssert extends SoftAssertions {

    private void checkFailure() {

        if(!wasSuccess()) {

            onFailure();
        }
    }

    private void onFailure() {

        //doFailureStuff
    }

    @Override
    public BigDecimalAssert assertThat(BigDecimal actual) {

        BigDecimalAssert assertion = super.assertThat(actual);
        checkFailure();
        return assertion;
    }

    @Override
    public BooleanAssert assertThat(boolean actual) {

        BooleanAssert assertion = super.assertThat(actual);
        checkFailure();
        return assertion;
    }
}

但是请注意,您将必须重写SoftAssertions类中的每个断言方法,就像我在这里通过示例向您展示的那样。而且,如果将新的断言添加到 SoftAssertions 类中,您也必须覆盖它们。这是我现在能找到的最好的解决方案,但在 assertj 更新之前也不起作用。

编辑:实际上我不确定这是否会起作用,因为我不确定wasSuccess()在每次成功软断言后或仅在投掷后是否会返回 true,assertAll()但由于该功能尚未推出,我显然无法对此进行测试。

奖励:添加 wasSuccess() 的提交

于 2016-06-02T07:21:28.997 回答