代码之家  ›  专栏  ›  技术社区  ›  eurosecom

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

  •  3
  • eurosecom  · 技术社区  · 7 年前

    我正在覆盖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 回复  |  直到 7 年前
        1
  •  2
  •   David Rawson B Aristide    7 年前

    您可以使用 @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);
                }
            });