2

跑步

assertThat(collection, allOf(hasItems(i1, i2, i3), hasSize(3)));

从 Eclipse (Run as -> Junit) 一切正常,但是当我执行 Maven 测试 ( ) 时,它在阶段mvn clean test失败,解释如下test-compile

[ERROR] The method allOf(Matcher<? super T>, Matcher<? super T>) in the type AllOf<T> is not applicable for the arguments (Matcher<Iterable<Song>>, Matcher<Collection<? extends Object>>)

依赖项是

<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-all</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit-dep</artifactId>
  <version>4.10</version>
  <scope>test</scope>
  <exclusions>
    <exclusion>
      <artifactId>hamcrest-core</artifactId>
      <groupId>org.hamcrest</groupId>
    </exclusion>
  </exclusions>
</dependency>

我究竟做错了什么?

谢谢

斯特凡诺

4

1 回答 1

2

您必须为方法hasItems和指定类型参数hasSize。编译器的自动类型推断不适用于您的情况。要指定类型参数,您不能使用静态导入的方法,而是使用它们的声明类来限定它们 -Matchers.<Song>hasItems(i1,i2,i3)例如。

于 2012-12-17T08:30:33.133 回答