使用 jUnit 4.12 和 Hamcrest 1.3,我如何断言函数 returns 是两个整数之一?
Using jUnit 4.12 and Hamcrest 1.3, how can I assert a function returns one of two integers?
我有兴趣编写一个测试来检查一个函数 returns 是否是两个值之一。例如:
@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;
}
@Test
public void testRandomFunction() {
int result = randomFunction(5);
assertTrue(result == 2 || result == 3);
}
要使用匹配器,您需要使用 assertThat
而不是 assertEquals
。
assertThat(
"RandomFunction result",
RandomFunction(5),
either(equalTo(2)).or(equalTo(3)),
);
我有兴趣编写一个测试来检查一个函数 returns 是否是两个值之一。例如:
@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;
}
@Test
public void testRandomFunction() {
int result = randomFunction(5);
assertTrue(result == 2 || result == 3);
}
要使用匹配器,您需要使用 assertThat
而不是 assertEquals
。
assertThat(
"RandomFunction result",
RandomFunction(5),
either(equalTo(2)).or(equalTo(3)),
);