1

我在这里错过了什么吗?

@Test
public void testAnything(){
    Random random = new Random();
    assertThat(random.nextInt(), is(equalTo(anything())));
}

这不编译。Eclipse 抱怨“MatcherAssert 类型中的方法 assertThat(T, Matcher) 不适用于参数 (int, Matcher>)”

使用任何东西()我错过了什么吗?我过去使用过其他 Hamcrest 方法……那么这有什么不同呢?

4

1 回答 1

2

这不是如何equalTo工作的。它在内部调用Object#equals(Object)并且必须通过anything(). 那没有意义。只需省略它,它就可以工作:

Random random = new Random();
assertThat(random.nextInt(), is(anything()));
于 2012-12-12T11:35:05.877 回答