我正在使用带有assertj的testng来测试使用fluent的web和用于报告结果的范围报告
我在问题面前问过,但忘了提及assertj的使用。
提供的答案是扩展软断言,并且它具有onassertfauilre功能。
assertj软断言有没有这样的东西?或其他灵魂绕过它?
答案 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但我可以由于该功能尚未推出,因此显然无法对此进行测试。