我有兴趣编写一个测试,使我可以检查一个函数是否返回两个值之一。例如:
@Test
public void testRandomFunction() {
assertEquals(
either(equalTo(2)).or(equalTo(3)),
RandomFunction(5)
);
return;
}
在网上阅读后,我发现了有关hamcrest的比赛者。代码可以编译,但是当我运行测试时,似乎将整数5与匹配对象进行了比较,而不是整数2和3。
如果这样做更容易,我愿意尝试除匹配器以外的其他方法。有人知道我该怎么做吗?
我也尝试了以下方法但未成功:
@Test
public void testRandomFunction() {
Set<Integer> acceptedValues = new HashSet<Integer>();
acceptedValues.add(2);
acceptedValues.add(3);
assertEquals(
isIn(acceptedValues),
RandomFunction(5)
);
return;
}
最佳答案
要使用匹配器,您需要使用 assertThat
而不是assertEquals
。
assertThat(
"RandomFunction result",
RandomFunction(5),
either(equalTo(2)).or(equalTo(3)),
);