`Matchers.hasItem` 和 `Matchers.contains` 是一样的吗?
are `Matchers.hasItem` and `Matchers.contains` the same?
我看到了这个post
关于两者的区别:
Matchers.hasItem(..)
Assert.assertThat(items, Matchers.hasItem(Matchers.hasToString("c")));
which states
和
Matchers.contains
但我还是不明白。他们都寻找一个谓词满足。没有?
它们几乎相同,但是Matchers.hasItem
如前所述
will stop as soon as a matching item is found
然后Matchers.contains
the examined iterable must only yield one item
不同的是,第一个检查是否至少有一个项目(可能是两个或更多),而第二个检查是否只有一个项目(只有一个,没有更多)。
对于hasItem
,可迭代对象至少需要有一项匹配参数匹配器。此外,它可以以任何顺序包含更多项(匹配或不匹配)。 (在每个元素上尝试匹配器,直到其中一个匹配,其余的将被忽略。)
对于 contains
,可迭代对象需要恰好具有与参数(或参数)匹配的项目(或项目),顺序相同,没有其他。 (即第一项需要匹配第一个参数匹配器,第二项需要匹配第二个参数匹配器,...最后一项需要匹配最后一个参数匹配器。每个匹配器只在一个元素上进行尝试。)
只有一个参数,这意味着可迭代对象只需要一个元素。
我看到了这个post
关于两者的区别:
Matchers.hasItem(..)
Assert.assertThat(items, Matchers.hasItem(Matchers.hasToString("c")));
which states
和
Matchers.contains
但我还是不明白。他们都寻找一个谓词满足。没有?
它们几乎相同,但是Matchers.hasItem
如前所述
will stop as soon as a matching item is found
然后Matchers.contains
the examined iterable must only yield one item
不同的是,第一个检查是否至少有一个项目(可能是两个或更多),而第二个检查是否只有一个项目(只有一个,没有更多)。
对于hasItem
,可迭代对象至少需要有一项匹配参数匹配器。此外,它可以以任何顺序包含更多项(匹配或不匹配)。 (在每个元素上尝试匹配器,直到其中一个匹配,其余的将被忽略。)
对于 contains
,可迭代对象需要恰好具有与参数(或参数)匹配的项目(或项目),顺序相同,没有其他。 (即第一项需要匹配第一个参数匹配器,第二项需要匹配第二个参数匹配器,...最后一项需要匹配最后一个参数匹配器。每个匹配器只在一个元素上进行尝试。)
只有一个参数,这意味着可迭代对象只需要一个元素。