【发布时间】:2018-10-29 10:44:28
【问题描述】:
我想验证一个确切的Collection 是否传递给了一个模拟方法。
这就是我尝试这样做的方式:
这是我真实代码的一个简单示例,它重现了完全相同的问题。
import com.google.common.collect.Lists;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.mockito.hamcrest.MockitoHamcrest;
import java.util.Collection;
public class MockTest {
@Test
void mockTest() {
final Collection<String> collection = Mockito.mock(Collection.class);
collection.addAll(Lists.newArrayList("hello"));
Mockito.verify(collection).addAll(MockitoHamcrest.argThat(Matchers.contains("hello")));
}
}
但它不起作用,我得到这个编译错误:
Error:(20, 35) java: incompatible types: inference variable T has incompatible bounds
equality constraints: java.lang.Iterable<? extends E>
lower bounds: java.util.Collection<? extends java.lang.String>,java.lang.Object
知道为什么它不起作用或我该如何做不同的事情吗?
【问题讨论】:
标签: java junit mockito hamcrest