服务java中的模拟资源(mockito)

时间:2014-04-30 16:22:58

标签: java mockito

我正在为类Export做一些测试 我需要模拟一个方法,所以我做了一个mockito(我是Mockito的新手)

public Class ExportServiceImpl implements ExportService{

   @Autowired
   Service service

   public void export(){

      String exportString = service.getPath();
      domoreStuff() ....

  }    

  public Class ServiceImpl implements Service(){

      public String getPath(){
          return "thePath";
      }
  }   

我需要模拟getPath()方法,所以我在TestNG中做了

 public class ExportTestNG(){

    public textExport(){

     Service serviceMock = Mockito.mock(Service.class);
     Mockito.when(serviceMock.getData()).thenReturn("theNewPath");
     System.out.println("serviceMock.getData() : " + serviceMock.getData()); // prints "theNewPath", OK

     exportService.export();  // the getData() is not the mockito one

    }
 }

我可能没有与mockito相关,我可能也不知道它是如何工作的。 有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以使用Mockito为您注入模拟,并避免添加setter方法。

@RunWith(MockitoJUnitRunner.class)
public class ExportTestNG(){

    @InjectMocks
    private ExportServiceImpl exportService;

    @Mock
    private Service serviceMock;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }

    public textExport(){                            
        Mockito.when(serviceMock.getData()).thenReturn("theNewPath");
        exportService.export(); 
    }
}

答案 1 :(得分:0)

您需要将模拟服务连接到exportService对象。 如果您有服务成员变量的setter,请执行以下操作:

exportService.setService(serviceMock);// add this line.
exportService.export();

如果您没有安装者,则需要在致电出口前进行接线。 选项包括:

  • 使用反射设置服务成员变量的值。
  • 编写仅测试版本的服务,并使用spring配置xml文件的仅测试版本。
  • 其他的东西(我从未做过,因此不知道)。