我使用这个maven系列在我的项目上设置了mockito:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>
使用@Mock
注释我没有问题,但我无法访问和使用类似的模拟方法:
when(someMock.someMethod()).thenReturn();
Eclipse只是不识别它们。
请帮忙。
答案 0 :(得分:27)
尝试拨打Mockito.when(foo.getBar()).thenReturn(baz)
和Mockito.verify(foo).getBar()
,这不会依赖静态导入。与@Mock
注释(技术上是一个类)不同,when
和verify
是Mockito类中的静态方法。
一旦你有了这个工作,那就试试David提到的静态导入:
import static org.mockito.Mockito.when; // ...or...
import static org.mockito.Mockito.*; // ...with the caveat noted below.
这样您就可以使用Mockito.when
而无需指定Mockito
类。您也可以使用通配符,但每this SO answer Java docs建议谨慎使用通配符 - 特别是因为如果稍后将类似命名的静态方法添加到Mockito中,它可能会中断。
添加import org.mockito.*;
是不够的,因为它会添加org.mockito
包中的所有类,而不是org.mockito.Mockito
上的方法。
对于Eclipse,您可以通过将光标放在when
的{{1}}部分并按Control-Shift-M(“添加导入”)来添加静态导入。您还可以将Mockito.when
添加到收藏夹(窗口&gt;首选项&gt; Java&gt;编辑器&gt;内容辅助&gt;收藏夹&gt;新类型),以便所有Mockito静态方法都显示在您的Ctrl-Space内容辅助中即使您没有专门导入它们也会提示。 (您可能还想为org.mockito.Matchers执行此操作,org.mockito.Matchers在org.mockito.Mockito上通过继承在技术上可用,但由于这个原因可能不会出现在Eclipse中。)
答案 1 :(得分:0)
Kotlin语法-不要忘记``反引号:
import org.mockito.Mockito.`when`
`when`(someMock.someMethod()).thenReturn();