Hamcrest的多个正确结果(是否有匹配器?)

时间:2020-03-06 14:55:07  来源:igfitidea点击:

我对匹配者来说还比较陌生。我正在和JUnit一起使用hamcrest玩弄,我有点喜欢。

有没有办法指出多个选择之一是正确的?

就像是

assertThat( result, is( either( 1, or( 2, or( 3 ) ) ) ) ) //does not work in hamcrest

我正在测试的方法返回集合的一个元素。该列表可能包含多个候选项。我当前的实现返回第一击,但这不是必须的。如果返回任何可能的候选者,我希望我的测试用例能够成功。我们将如何用Java表达这一点?

(我对hamcrest替代品持开放态度)

解决方案

assertThat(result, anyOf(equalTo(1), equalTo(2), equalTo(3)))

从Hamcrest教程中:

anyOf - matches if any matchers match, short circuits (like Java ||)

另请参阅Javadoc。

此外,我们可以编写自己的Matcher,这很容易做到。