我想把声明说成
when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);
我有导入
import static org.mockito.Mockito.when;
import static org.mockito.Matchers.anyLong;
import static org.mockito.Matchers.thenReturn; //not importing
导入thenReturn不是映射。这是版本问题吗?我使用的是Mockito 1.8.4。
答案 0 :(得分:3)
如果你使用它就足够了:
import static org.mockito.Mockito.*;
然后删除其余部分。
答案 1 :(得分:1)
Mockito在返回类OngoingStubbing的对象时。这个类有一个方法thenReturn(),这就是你的示例代码中调用的内容。无需额外导入。
when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);
可以分解为
OngoingStubbing thing = when(myDao.fetchTree(anyLong()));
thing.thenReturn(myTreeList);
您只是调用OngoingStubbing的thenReturn
方法。
答案 2 :(得分:0)
您的问题:这是版本问题吗? 我会说 NO,这不是版本问题。
如前所述,你应该
在测试中使用此代码创建最小测试
when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);
从命令行运行此代码(不在STS内部或任何IDE或类似内容中)
问:为什么要从命令行运行它并避免使用IDE-s等? A:因为有时IDE的代码解析器和检查程序以及验证程序会报告代码中某些角落的误报。