考虑以下测试:
@Test
public void containsInAnyOrderImplementsFirstWinStrategy() {
List<Integer> list = Arrays.asList(1, 2, 3, 4);
assertThat(list, IsIterableContainingInAnyOrder.containsInAnyOrder(
Matchers.greaterThan(3), Matchers.lessThan(5), equalTo(1), equalTo(2)));
}
我希望测试是绿色的,但它失败了:
java.lang.AssertionError: 预期:可以以任何顺序迭代项目[值大于&lt; 3&gt;,值小于&lt; 5&gt;,&lt; 1&gt;,&lt; 2&gt;] 但是:不匹配:&lt; 3&gt;
据我所知,原因是hamcrest采取了第一个胜利策略,因为lessThan(5)匹配1,此匹配器不再可用于匹配3
。
是否有另一种方法可以实现更完整的containsInAnyOrder
(以更大的O为代价)