我正在使用 AssertJ 来测试 web,使用 fluentlenium 和范围报告来报告结果。
我在问题之前问过,但忘了提到 AssertJ 的使用。
提供的答案是扩展软断言并且它具有onAssertFailure
功能。
AssertJ 软断言有类似的东西吗?还是有其他解决方案可以绕过它?
我正在使用 AssertJ 来测试 web,使用 fluentlenium 和范围报告来报告结果。
我在问题之前问过,但忘了提到 AssertJ 的使用。
提供的答案是扩展软断言并且它具有onAssertFailure
功能。
AssertJ 软断言有类似的东西吗?还是有其他解决方案可以绕过它?
在下一个 AssertJ 版本(2.5.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类中的每个断言方法,就像我在这里通过示例向您展示的那样。而且,如果将新的断言添加到 SoftAssertions 类中,您也必须覆盖它们。这是我现在能找到的最好的解决方案,但在 assertj 更新之前也不起作用。
编辑:实际上我不确定这是否会起作用,因为我不确定wasSuccess()
在每次成功软断言后或仅在投掷后是否会返回 true,assertAll()
但由于该功能尚未推出,我显然无法对此进行测试。