我看到了post
关于:
之间的区别Matchers.hasItem(..)
Assert.assertThat(items, Matchers.hasItem(Matchers.hasToString("c")));
which states
和
Matchers.contains
但我仍然没有区别。他们都寻找一个谓词满意度。否?
答案 0 :(得分:3)
它们几乎相同,但Matchers.hasItem
如上所述
只要找到匹配的项目,就会停止
然后Matchers.contains
被检查的iterable只能生成一个项目
不同之处在于,第一个检查是否至少有一个项目(可能是两个或更多),但第二个检查是否只有一个项目(只有一个项目,不再有项目)。
答案 1 :(得分:1)
使用contains
,iterable需要至少有一个与参数匹配器匹配的项。此外,它可以以任何顺序包含更多项目(匹配与否)。 (在每个元素上尝试匹配,直到其中一个匹配,其余的被忽略。)
对于{{1}},迭代需要具有与参数(或参数)匹配的项目(或多个项目),顺序相同,而不是其他项目。 (即第一项需要匹配第一个参数匹配器,第二项需要匹配第二个参数匹配器,...和最后一个项匹配最后一个参数匹配器。每个匹配器只需要一个元素。) 只有一个参数,这意味着迭代需要只有一个元素。