首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在斯波克中断言“containsAll”时显示更好的差异

在斯波克中断言“containsAll”时显示更好的差异
EN

Stack Overflow用户
提问于 2016-08-12 07:42:46
回答 2查看 513关注 0票数 4

我需要执行断言,即集合包含来自其他集合的所有元素。

以下测试应该失败,因为第一个集合不包含来自第二个集合的7

代码语言:javascript
复制
def first = [6, 1, 5, 2, 4, 3]
def second = [3, 4, 2, 5, 7, 6]
expect:
first.containsAll(second)

然而,测试失败是根本无法读懂的。尚不清楚是否只缺少了7

代码语言:javascript
复制
left.containsAll(right)
|    |           |
|    false       [3, 4, 2, 5, 7, 6]
[6, 1, 5, 2, 4, 3]

AssertJ处理这个问题要好得多:

代码语言:javascript
复制
java.lang.AssertionError: 
Expecting:
 <[6, 1, 5, 2, 4, 3]>
to contain:
 <[3, 4, 2, 5, 7, 6]>
but could not find:
 <[7]>

什么样的断言在Spock中是惯用的,以便为containsAll 获得更好的失败消息

EN

回答 2

Stack Overflow用户

发布于 2016-08-12 08:30:35

我想你可以黑进去做一些像(right - left).isEmpty()这样的事情,它应该打印出右边的元素,而不是左边的元素。

这是一种有点烦人的方式,但实际上我能想出的任何东西

票数 4
EN

Stack Overflow用户

发布于 2016-08-12 10:06:47

我同意AssertJ有更好的消息,您可以在Spock测试中使用AssertJ。

除此之外,您还必须定义您自己喜欢的断言消息。

代码语言:javascript
复制
assert first.containsAll(second), "$first does not contain all from $second. Missing elements: " + (second - first)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38912559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档