2016-06-30 11 views
0

私はDagger 2を使用しており、テスト時にさまざまな依存関係を提供しようとしています。テストごとに異なるテストランナーを使用する

私はテストに異なる依存関係を提供できますが、残念ながら、これらはandroidTestディレクトリ内のすべてのテストに適用されます。

これは、を使用するTestAppComponentを指定することで行います。私のでは、私のAndroidApplicationを拡張して、私はAppComponentではなくTestAppComponentを提供しています。それから私はnewApplication方法そうのように拡張しTestRunnerあります。そして、私は現在のランナーを置き換え、このランナーを使用する

@Override 
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
    return super.newApplication(cl, TestApplication.class.getName(), context); 
} 

を次

testInstrumentationRunner "com.company.myapp.TestRunner" 

はどうすれば私の質問私は別のコンポーネント/アプリケーション/テストランナーを使用するのではなく、それぞれ異なるテストに使います。私は1つのテストで依存関係を模倣したいが、別のテストでは依存したくないかもしれない。

答えて

0

私はこれをブログ記事で見つけました。これはカスタムランナーの作成をバイパスし、代わりにRuleを使用して、ロードされたApplication内の別のコンポーネントを設定します。これは、あなたがしたいことであるテストクラスごとに異なるコンポーネントを提供できることを意味します。

Ribot Labsのブログ記事はhere

です
関連する問題