【问题标题】:Can Dagger2 be used for unit tests and instrumented tests?Dagger2 可以用于单元测试和仪器测试吗?
【发布时间】:2018-06-24 16:58:02
【问题描述】:

https://developer.android.com/studio/test/index.html 您是否可以将 Dagger2 用于Local unit tests(位于模块名称/src/test/java/.)、Instrumented tests(位于模块名称/src/androidTest/java/.)或两者兼而有之?

有这方面的例子吗?

【问题讨论】:

标签: android unit-testing dagger-2


【解决方案1】:

是的。 Dagger2 适用于单元测试和仪器测试。一个例子在这里:https://github.com/googlesamples/android-architecture/tree/todo-mvp-dagger

这是一个用于模拟变体的模块示例,可用于单元/ui 测试:

@Module
abstract public class TasksRepositoryModule {

    private static final int THREAD_COUNT = 3;

    @Singleton
    @Binds
    @Local
    abstract TasksDataSource provideTasksLocalDataSource(TasksLocalDataSource dataSource);

    @Singleton
    @Binds
    @Remote
    abstract TasksDataSource provideTasksRemoteDataSource(FakeTasksRemoteDataSource dataSource);

    @Singleton
    @Provides
    static ToDoDatabase provideDb(Application context) {
        return Room.databaseBuilder(context.getApplicationContext(), ToDoDatabase.class, "Tasks.db")
                .build();
    }

    @Singleton
    @Provides
    static TasksDao provideTasksDao(ToDoDatabase db) {
        return db.taskDao();
    }

    @Singleton
    @Provides
    static AppExecutors provideAppExecutors() {
        return new AppExecutors(new DiskIOThreadExecutor(),
                Executors.newFixedThreadPool(THREAD_COUNT),
                new AppExecutors.MainThreadExecutor());
    }
}

https://github.com/googlesamples/android-architecture/blob/todo-mvp-dagger/todoapp/app/src/mock/java/com/example/android/architecture/blueprints/todoapp/data/source/TasksRepositoryModule.java#L24

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多