Hamcrest containsInAnyOrder 匹配如果字符串包含
Hamcrest containsInAnyOrder match if string contains
假设我有
@Test
public void iterable_matches_order () {
List<String> cloths = Lists.newArrayList("shirts", "shoes", "pants", "socks");
assertThat(cloths, containsInAnyOrder("shi", "sho", "pan", "soc"));
}
我希望它通过,因为 shi
包含在 shirts
中,sho
包含在 shoes
中,依此类推。 containsInAnyOrder
似乎只有在每个条目都完全匹配时才会通过。
根据文档:http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html#containsInAnyOrder(T...)它不匹配子字符串,而是匹配整个字符串
assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder("bar", "foo"))
您可以尝试使用下面的方法,但遗憾的是您一次只能检查一个子字符串。您将必须有多个断言,因为您不知道列表中哪个子字符串失败。
assertThat(布料, hasItem(包含("shi")))
默认情况下 containsInAnyOrder
通过 equals 方法匹配给定的元素。但是您可以提供任意子匹配器。在您的示例中,您可以使用 Matchers.containsString
方法:
assertThat(cloths, containsInAnyOrder(containsString("shi"), containsString("sho"),
containsString("pan"), containsString("soc")));
请注意,如果您重新排序 cloths
中的项目,上述断言也会成功。如果顺序很重要,请使用 Matchers.contains
:
assertThat(cloths, contains(containsString("shi"), containsString("sho"),
containsString("pan"), containsString("soc")));
假设我有
@Test
public void iterable_matches_order () {
List<String> cloths = Lists.newArrayList("shirts", "shoes", "pants", "socks");
assertThat(cloths, containsInAnyOrder("shi", "sho", "pan", "soc"));
}
我希望它通过,因为 shi
包含在 shirts
中,sho
包含在 shoes
中,依此类推。 containsInAnyOrder
似乎只有在每个条目都完全匹配时才会通过。
根据文档:http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html#containsInAnyOrder(T...)它不匹配子字符串,而是匹配整个字符串
assertThat(Arrays.asList("foo", "bar"), containsInAnyOrder("bar", "foo"))
您可以尝试使用下面的方法,但遗憾的是您一次只能检查一个子字符串。您将必须有多个断言,因为您不知道列表中哪个子字符串失败。
assertThat(布料, hasItem(包含("shi")))
默认情况下 containsInAnyOrder
通过 equals 方法匹配给定的元素。但是您可以提供任意子匹配器。在您的示例中,您可以使用 Matchers.containsString
方法:
assertThat(cloths, containsInAnyOrder(containsString("shi"), containsString("sho"),
containsString("pan"), containsString("soc")));
请注意,如果您重新排序 cloths
中的项目,上述断言也会成功。如果顺序很重要,请使用 Matchers.contains
:
assertThat(cloths, contains(containsString("shi"), containsString("sho"),
containsString("pan"), containsString("soc")));