android - Dagger2 可以用于单元测试和插桩测试吗?

标签 android unit-testing dagger-2

https://developer.android.com/studio/test/index.html 您是否可以将 Dagger2 用于本地单元测试(位于 module-name/src/test/java/.),Instrumented tests(位于 module-name/src/androidTest/java/.) 或两者?

有这方面的例子吗?

最佳答案

是的。 Dagger2 适用于单元测试和仪器测试。示例如下:https://github.com/googlesamples/android-architecture/tree/todo-mvp-dagger

这里是一个模拟变体中使用的模块示例,可用于单元/用户界面测试:

@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

关于android - Dagger2 可以用于单元测试和插桩测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48273544/

相关文章:

android - 依赖项列表中的无效项目 'Flutter for Android'

c - 在 C 中将字符串作为文件句柄访问

c++ - 重构单例/全局以使用依赖注入(inject)进行单元测试

android - Mockito Android 单元测试

android - Dagger2 依赖循环使用@Binds 和@Inject 字段

java - 使用 Dagger 和 AWS Lambda 进行单元测试

java - 删除 POST 主体 Retrofit 中的可选参数

android - HttpURLConnection POST 参数无法正常工作

android - 奇怪的 Android RecyclerView (GridLayoutManager) 焦点行为

scala - 对于基本数据框创建示例,我应该如何在 Spark 中编写单元测试?