首页 > 解决方案 > 来自 assertJ 的方法 anySatisfy 吞下实际的失败消息

问题描述

我在我的项目中使用 assertJ 来很好地制定测试断言。我调用anySatisfy一个集合,其中我在 lambda 中传递断言,至少一个集合元素必须满足这些断言。

assertThat(myCollection).anySatisfy(myCollectionElement-> { 
    assertThat(myCollectionElement).callAnyAssertionMethod();
    assertThat(myCollectionElement).anotherAssertionMethod();
}

一旦没有元素满足所需的断言,anySatisfy就会按预期失败。

问题是控制台输出如下

java.lang.AssertionError: 
Expecting any element of:
  <allCollectionElementsArSerializedHere>
to satisfy the given assertions requirements but none did.

at myPackage.myTestClass.myTestMethod(MyTestClass.java:xyz)

最后,我确实知道anySatisfy在线调用xyz失败,但我不知道 lambda 中的哪些特定断言没有得到满足。我只能在调试器中看到。

我怎样才能获得预期的日志输出?

标签: assertj

解决方案


您不能,但我们已改进allSatisfy以报告未满足的要求。我们将为anySatisfy下一个版本做同样的事情,我创建了https://github.com/joel-costigliola/assertj-core/issues/1400来跟踪它。


推荐阅读