2016-09-20 59 views
2

我有一些嵌套列表,我想斷言使用hamcrest。 基本上它們是包含在列表中的項目列表。如何使用hamcrest斷言嵌套列表java

例如

List<List<String>> [[bed, bench, bookshelf], [book, bowl, basket], [bar, biscuit, smoked beef]]

我想斷言,每一個項目爲「B」

hasItem似乎停止第一個列表匹配後開始。

assertThat(list, hasItem(everyItem(startsWith("b"))));

我怎樣才能做到這一點hamcrest?

我試過也包含。

謝謝...

回答

0

我的直覺是,你不會使用現有的匹配那裏。

但是寫下自己的匹配器......只需要幾分鐘,一旦你明白事情是如何結合在一起的。

也許你看看我的另一個answer;我在這裏給出一個完整的例子,說明如何編寫他自己的匹配器。那時候,我花了15分鐘。儘管我從未寫過自定義匹配器。

+0

非常感謝您的及時回覆啊編譯器。 是的,我正在考慮和/或通過for循環遍歷每個列表。 我只是認爲可能有1個班輪現有的Hamcrest匹配器嵌套列表。 – teak

0

hasItem檢查是否有至少有一個項目與給定的條件。你的第一個內部列表符合條件,所以hamcrest將停止。

如你所想,everyItem檢查..每個項目。

解決方法:assertThat(list, everyItem(everyItem(startsWith("b")))); 爲了取悅你要投List<List<String>>Iterable<Iterable<String>> list