Mockito方法无法访问

时间:2012-12-30 09:48:54

标签: mockito

我使用这个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只是不识别它们。

请帮忙。

2 个答案:

答案 0 :(得分:27)

尝试拨打Mockito.when(foo.getBar()).thenReturn(baz)Mockito.verify(foo).getBar(),这不会依赖静态导入。与@Mock注释(技术上是一个类)不同,whenverify是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();