dagger2如何替换测试中的实现

时间:2018-11-25 21:57:38

标签: android mockito dagger

我编写了一个名为TimelapseLibrary的android库。它可以拍摄照片,服务于简单的HTTP服务器来控制该过程。最终客户端创建TimelapseLibrary对象,并在内部创建HTTP服务等。

我不知道如何测试库,如何模拟用户创建TimelapseLibrary时创建的HTTP服务。

我在互联网上发现的简单内容是:

public class TimelapseLibrary {

    private HttpService httpService;
    public static TimelapseComponent component;

    public TimelapseLibrary() {
        if(component == null) {
            component = DaggerTimelapseComponent.create();
        }

        this.httpService = component.getHttpService();
    }
}

@Component
public interface TimelapseComponent {
    HttpService getHttpService();
}

在测试中使用此方式:

TimelapseLibrary.component = customTestComponentDefined;
TimelaseLibrary lib = new TimelaseLibrary();

但是该 customTestComponent 无法在 androidTest 模块中定义,因此无法编译。即使如此,我仍然认为这很糟糕,因为我们使用静态调用来设置组件。

如何正确执行此操作?使用dagger2,mockito吗?

0 个答案:

没有答案