2017-08-30 100 views
1

我重寫Dagger 2組件以模擬Android中的依賴關係。爲此,我使用自定義JUnit TestRunners。如何在Android中使用多個自定義測試運行器?

它似乎在我的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

可以使用@RunWith標註在你的測試類指定測試運行器類:

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

但是,一般來說你大概可以完成你想要使用JUnit rules做什麼。例如,下面的規則DaggerMock實例化一個新MyComponentMyModule,並將此作爲應用程序的根組件:

@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); 
      } 
     }); 
相關問題