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



我正在重写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?

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

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

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

@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);
}
});

相关内容

  • 没有找到相关文章

最新更新