来自assertJ的方法anySatisfy吞噬了实际的失败消息

时间:2019-01-18 08:51:44

标签: assertj

我在项目中使用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中的哪些特定断言。我只能在调试器中看到它。

如何获得预期的日志输出?

1 个答案:

答案 0 :(得分:2)

您不能,但我们已改进allSatisfy来报告未满足的要求。 在下一个版本中,我们将对anySatisfy进行同样的操作,我已经创建了https://github.com/joel-costigliola/assertj-core/issues/1400来进行跟踪。