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,这很容易做到。