2017-08-30 9 views
1

Androidの依存関係を模倣するためにDagger 2 Componentsをオーバーライドしています。このため私はカスタムJUnit TestRunnersを使用しています。複数のカスタムテストランナーをAndroidで使用するにはどうすればよいですか?

私のようですねapp/build.gradle testRunnerは1つしか設定できません。

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ルールは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); 
      } 
     }); 
関連する問題