我有兴趣编写一个测试,允许我检查函数是否返回两个值之一。例如:
@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)),
);
@Test
public void testRandomFunction() {
int result = randomFunction(5);
assertTrue(result == 2 || result == 3);
}