Java 为mockito导入

Java 为mockito导入,java,mockito,Java,Mockito,我想把这句话说成 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 返回的导入未映射。这是版本问题吗?我正在使用Mockito

我想把这句话说成

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

返回的导入未映射。这是版本问题吗?我正在使用Mockito 1.8.4。

如果您使用:

import static org.mockito.Mockito.*;

并删除其余部分。

Mockito's when返回一个OngoingStubing类的对象。这个类有一个方法thenReturn(),这就是在示例代码中调用的方法。不需要额外的导入

when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);
可能会被分解为

OngoingStubbing thing = when(myDao.fetchTree(anyLong()));
thing.thenReturn(myTreeList);
您只是在调用OngoingStubing的
然后返回
方法。

您的问题:这是版本问题吗? 我会说不,这不是版本问题

如前所述,您应该

  • 在测试中使用此代码创建最小测试

    when(myDao.fetchTree(anyLong())).thenReturn(myTreeList);
    
  • 从命令行运行此代码(不在STS或任何IDE或类似的程序中)

问:为什么要从命令行运行它并避免使用IDE-s等?
答:因为有时您喜欢的IDE的代码解析器、检查程序和验证程序会报告代码中某些角落案例的误报。

但是STS用红色下划线表示不满。您不能简单地删除导入行吗?我已经删除了它。我的其他导入是导入静态org.junit.Assert.assertEquals;导入静态org.junit.Assert.assertNotNull;可能是它们导致了冲突导入静态org.mockito.mockito.*;导入org.junit.Before;导入org.junit.Test;导入org.junit.runner.RunWith;导入org.mockito.InjectMocks;导入org.mockito.Matchers;导入org.mockito.Mock;导入org.mockito.runners.MockitoJUnitRunner;尝试在最小的测试文件中重新创建此文件。基本上,一个只有一个测试方法的类只包含重现问题所需的内容,而没有其他内容。要么这个练习会告诉你需要修复什么,要么你可以在这里发布这个最小的文件,我们可以从中找出答案。通常我讨厌*导入,它们会使重构变得困难。但是对于这样的测试和导入测试支持?去争取吧