为什么我的hamcrest"包含"不按预期工作?

时间:2014-08-12 11:14:12

标签: java unit-testing testing hamcrest

我跑这条线:

List<String> ids = new List<String>()
ids.add("id1");
ids.add("id2");
assertThat(ids, contains("id1"));

但奇怪的是它返回“失败”。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

您需要使用

assertThat(ids, hasItem(equalTo("id1"));

这是因为contains会让你有一个匹配可迭代中每个项目的匹配器。

如果你看一下api文档here你可以看到contains和hasItem之间的区别。如果您的列表如下:

List<String> ids = new List<String>()
ids.add("id1");

你的断言会像你期望的那样奏效。