如何在 Android 中使用多个自定义测试运行器?
How do I use multiple custom test runners in 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'
}
如何设置多个测试运行器?我希望我编写的每个测试 class 都有一个单独的 TestRunner?
您可以在测试 classes 中使用 @RunWith
注释来指定测试运行程序 class:
@RunWith(FooTestRunner.class)
public class TestFoo {
@Before
public void setUp();
}
但是,一般来说,您可能可以使用 JUnit rules. For example, the following 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);
}
});
我正在覆盖 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'
}
如何设置多个测试运行器?我希望我编写的每个测试 class 都有一个单独的 TestRunner?
您可以在测试 classes 中使用 @RunWith
注释来指定测试运行程序 class:
@RunWith(FooTestRunner.class)
public class TestFoo {
@Before
public void setUp();
}
但是,一般来说,您可能可以使用 JUnit rules. For example, the following 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);
}
});