我的java项目有多个层,例如Controller(依赖于)Service(依赖于)DAO。 我的目标是单元测试控制器。
我创建了Mock服务对象以将其注入到Controller类中。
谷歌搜索后,我了解到我可以使用java界面。
理想情况下,服务层不需要接口。
我想知道是否有一种不同的方法来注入没有java接口的模拟对象。
答案 0 :(得分:3)
有像Mockito这样的模拟库,可以在不需要接口的情况下为类创建模拟。
MyService serviceMock = org.Mockito.mock(MyService.class);
controller.setService(serviceMock);
答案 1 :(得分:1)
如果控制器中的类使用服务类,则在单元测试控制器类时,可以模拟服务类注入控制器类。
public class MyController {
private MyService myService;
public void setMyService(MyService myService) {
this.myservice = myservice;
}
}
是否模拟接口或类取决于控制器类具有的引用类型。
在上面的示例中,如果MyService
是一个接口,则可以模拟该接口。但如果它是一个类,那么你必须模拟那个类。
希望能解决你的问题。