在 assertj 中输出预期列表和实际列表之间的完整差异

Output full difference between expected and actual list in assertj

我正在使用 groovy、assertj、junit 和 gradle。我有一个包含这样断言的测试

assertThat(actualLongList).isEqualTo(expectedLongList)

当我 运行 gradle test 和那些列表不相等时,它会生成一个测试报告,但有这样的异常

org.junit.ComparisonFailure: expected:<...ent2",
"element3",
"element4",
"element5]"]> but was:<...ent2",
"element4,
"element5",
"element6]"]>

我能否以某种方式配置异常输出格式,使其完全输出两个列表?

 org.junit.ComparisonFailure: expected:
<["element1",
"element2",
"element3",
"element3",
"element4",]> but was:,
<["element1",
"element2",
"element4",
"element5",
"element6",]>

这就是 org.junit.ComparisonFailure#getMessage() 的工作原理(参见 javadoc)。 如果你想要一个完整的(更好的?)描述,你可以使用 containsOnlyElementsOf(或你认为合适的任何 containsXxxElementsOf),你会得到类似的东西:

java.lang.AssertionError: Expecting: <["element1", "element2", "element3", "element4", "element5", "element6", "element7", "element8", "element9"]> to contain only: <["element1", "element2", "element3", "element4", "element5", "element6", "element7", "element8", "element0"]> elements not found: <["element0"]> and elements not expected: <["element9"]>