如何在Android中使用多个自定义测试运行器?

时间:2017-08-30 07:49:30

标签: android junit android-testing dagger-2

我正在重写Dagger 2组件以模拟Android中的依赖项。为此,我使用自定义JUnit TestRunners。

似乎在我的app/build.gradle我只能设置一个testRunner。

defaultConfig {
    applicationId 'com.xxx.xxx'
    minSdkVersion 18
    targetSdkVersion 23
    versionCode 1
    versionName '1.0.0'

    testInstrumentationRunner 'com.xxx.xxx.DgMockTestRunner'
}

如何设置多个测试跑步者?我希望我写的每个测试类都有一个单独的TestRunner?

1 个答案:

答案 0 :(得分:2)

您可以在测试类中使用@RunWith注释来指定测试运行器类:

@RunWith(FooTestRunner.class)
public class TestFoo {
    @Before
    public void setUp();
}

但是,一般来说,您可以使用JUnit rules完成您想要做的事情。例如,以下DaggerMock规则使用MyComponent实例化新的MyModule,并将其设置为应用程序中的根组件:

@Rule public DaggerMockRule<MyComponent> daggerRule = new DaggerMockRule<>(MyComponent.class, new MyModule())
        .set(new DaggerMockRule.ComponentSetter<MyComponent>() {
            @Override public void setComponent(MyComponent component) {
                App app = (App) InstrumentationRegistry.getInstrumentation().getTargetContext().getApplicationContext();
                app.setComponent(component);
            }
        });