2017-09-06 12 views
1

私はエスプレッソ試験でダガーによって作成されたコンポーネントを注入したい。Dagger2注入によるエスプレッソ試験

コンポーネントは同じである必要があります。これは、短剣から何も上書きする必要はありません。

私は次のクラスがあります。

@Singleton 
@Component(modules = arrayOf(AppModule::class, DatabaseModule::class, RepositoryModule::class)) 
interface TestComponent: AppComponent { 
    fun inject(accountRepositoryTest: AccountRepositoryTest) 
} 

しかし、短剣決して:私は私のメインのDaggerComponentクラスにAccountRepositoryTestを追加することはできませんので

@RunWith(AndroidJUnit4.class) 
public class AccountRepositoryTest { 
    @Inject 
    AccountRepository repository; 

    @Before 
    public void setUp() throws Exception { 
     new DaggerTestComponent().builder().build().inject(this); 
    } 
} 

を、私は私のandroidTestsフォルダ内の別のコンポーネントクラスを作成しましたTestComponentインターフェイスからComponentClassを生成します。コードをコンパイルすると、私はいつもこのエラーを受け取ります。

私が行にコメントすると、私のコードがコンパイルされるので、ダガーがクラスを生成するのを防ぐのはこれだけだと確信しています。

私の質問は、どのようにしてandroidTestsフォルダに定義されたインターフェースからコンポーネントクラスを生成させるのですか?

答えて

1

解決策は、アンドロイドテストの依存関係にダガーコンパイラを追加することでした。あなたは

をkotlin使用している場合:

kaptAndroidTest "com.google.dagger:dagger-compiler:$daggerVersion" 

は、Javaを使用している場合:

androidTestAnnotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion" 
関連する問題