使用 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)),
);