如何使用 hamcrest 断言嵌套列表 java
how to assert nested lists using hamcrest java
我有一些嵌套列表,我想使用 hamcrest 断言。
基本上它们是列表中包含的项目列表。
例如
List<List<String>> [[bed, bench, bookshelf], [book, bowl, basket], [bar, biscuit, smoked beef]]
我想断言每个项目都以 "b"
开头
hasItem 似乎在第一个列表之后停止匹配。
assertThat(list, hasItem(everyItem(startsWith("b"))));
如何在 hamcrest 中执行此操作?
我也试过包含。
谢谢...
我的直觉是,使用现有的匹配器无法达到目的。
但是编写自己的匹配器...只需要几分钟,一旦您理解了事情是如何组合在一起的。
也许你看看我的另一个 ;我在这里给出了一个完整的例子,说明如何编写自己的匹配器。那时候,我大概花了 15 分钟;虽然我以前从未写过自定义匹配器。
hasItem
检查是否有 至少一个 项符合给定条件。您的第一个内部列表满足条件,因此 hamcrest 将停止。
如您所见,everyItem
检查..每个项目。
解决方案:assertThat(list, everyItem(everyItem(startsWith("b"))));
为了取悦编译器,您必须将 List<List<String>>
转换为 Iterable<Iterable<String>> list
我有一些嵌套列表,我想使用 hamcrest 断言。 基本上它们是列表中包含的项目列表。
例如
List<List<String>> [[bed, bench, bookshelf], [book, bowl, basket], [bar, biscuit, smoked beef]]
我想断言每个项目都以 "b"
开头hasItem 似乎在第一个列表之后停止匹配。
assertThat(list, hasItem(everyItem(startsWith("b"))));
如何在 hamcrest 中执行此操作?
我也试过包含。
谢谢...
我的直觉是,使用现有的匹配器无法达到目的。
但是编写自己的匹配器...只需要几分钟,一旦您理解了事情是如何组合在一起的。
也许你看看我的另一个
hasItem
检查是否有 至少一个 项符合给定条件。您的第一个内部列表满足条件,因此 hamcrest 将停止。
如您所见,everyItem
检查..每个项目。
解决方案:assertThat(list, everyItem(everyItem(startsWith("b"))));
为了取悦编译器,您必须将 List<List<String>>
转换为 Iterable<Iterable<String>> list