我有兴趣编写一个允许我检查函数是否返回两个值之一的测试。例如:
@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;
}
答案 0 :(得分:3)
要使用匹配器,您需要使用assertThat
代替assertEquals
。
assertThat(
"RandomFunction result",
RandomFunction(5),
either(equalTo(2)).or(equalTo(3)),
);
答案 1 :(得分:1)
@Test
public void testRandomFunction() {
int result = randomFunction(5);
assertTrue(result == 2 || result == 3);
}