注入没有java接口的模拟对象进行单元测试

时间:2013-11-20 16:38:26

标签: unit-testing junit mocking

我的java项目有多个层,例如Controller(依赖于)Service(依赖于)DAO。 我的目标是单元测试控制器。

我创建了Mock服务对象以将其注入到Controller类中。

谷歌搜索后,我了解到我可以使用java界面。

理想情况下,服务层不需要接口。

我想知道是否有一种不同的方法来注入没有java接口的模拟对象。

2 个答案:

答案 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是一个接口,则可以模拟该接口。但如果它是一个类,那么你必须模拟那个类。

希望能解决你的问题。