Testng断言报告并继续

时间:2016-06-02 06:30:09

标签: report testng fluentlenium assertj

我正在使用带有assertj的testng来测试使用fluent的web和用于报告结果的范围报告

我在问题面前问过,但忘了提及assertj的使用。

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

assertj软断言有没有这样的东西?或其他灵魂绕过它?

2 个答案:

答案 0 :(得分:2)

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

希望有所帮助

答案 1 :(得分:0)

在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类中覆盖 EVERY 断言方法,就像我在这里向您展示的示例一样。而且,如果将新的断言添加到SoftAssertions类,您也必须覆盖它们。这是我现在能找到的最佳解决方案,但是在更新assertj之前也无法工作。

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

奖金:The commit that added wasSuccess()