hamcrest的替代品包含InAnyOrder首胜战略

时间:2017-10-29 22:42:48

标签: hamcrest

考虑以下测试:

@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为代价)

0 个答案:

没有答案