Hamcrest断言那个含糊不清?

时间:2011-10-31 14:48:44

标签: java junit4 hamcrest

我从大学获得了一些示例代码,导入了项目并尝试运行测试: 方法assertThat(Integer,Matcher)对于MyClass类型

是不明确的

每个断言都标记为红色,并显示相同的错误消息,因此我尝试编写描述问题的最简单测试:

import static org.hamcrest.MatcherAssert.*;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;

@Test
public void whenAssertThatThenItIsAmbiguous() {
    List<String> list = Arrays.asList("A", "B", "C");
    assertThat(list.size(), is(3));
}

滚动断言后,我收到以下消息:

The method assertThat(Integer, Matcher<Integer>) is ambiguous for the type MyClass

我搜索了谷歌和stackoverflow但找不到任何有相同问题的人...请帮忙。

EDIT1:

解决方案:

import static org.junit.Assert。*; //删除此行

2 个答案:

答案 0 :(得分:23)

org.junit.Assertorg.hamcrest.MatcherAssert都声明assertThat(T, Matcher<T>)。选择静态导入一个或另一个,但不能同时导入两者,你应该没问题。

答案 1 :(得分:3)

这有两个一般原因,不合格的静态导入(import static blah.*),或路径上的多个版本的hamcrest。

你可以通过使用长格式is(equalTo(3))(有点怀疑),剔除静态导入等来绕过它。

您使用它的哪个框架也很重要。