私はこれがちょうど私がここで間違っていると思っています。私は私のJUnitテスト(エスプレッソテストではない、純粋なJUnit)の依存関係を注入するためにDagger 2.0を使用しようとしています。だから、私は 'メイン' Javaモジュールと 'テスト' Javaモジュールを持っています。ダガー2で生成されたテストコンポーネントが認識されない
@Module
public class MainModule {
@Provides
public Widget provideWidget() {
return new ConcreteWidget();
}
}
...
@Component (modules = MainModule.class)
public interface MainComponent {
void inject(WidgetConsumer consumer);
}
そして、私のテストモジュールでは、私は次のようしている:メインモジュールでは、私はダガーモジュールとコンポーネントを持って
@Module
public class TestModule {
@Provides public Widget provideWidget() {
return new Widget() {
@Override
public void doThing() {
int y = 6;
y ++;
}
};
}
}
...
@Component(modules = TestModule.class)
public interface TestComponent extends MainComponent{
}
私のbuild.gradleは以下のようになり、依存関係を持っていますこの:何らかの理由
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.2.0'
testCompile 'junit:junit:4.12'
compile 'com.google.dagger:dagger:2.9'
testCompile 'com.google.dagger:dagger:2.9'
annotationProcessor 'com.google.dagger:dagger-compiler:2.9'
testAnnotationProcessor 'com.google.dagger:dagger-compiler:2.9'
}
、ダガーはDaggerMainComponent
を生成しますが、DaggerTestComponent
を生成することを拒否します。私が構築すると、gradle出力にエラーはないようです。
注釈プロセッサが動作していると思いますが、どうやらAndroidのgradleプラグインは、コンパイル時に生成されたソースを引き出すことができません。私はapp/build/generated/source/apt/test /ディレクトリを調べて、そこにDaggerTestComponent.java
が見つかりましたが、何らかの理由で依存関係としてインポートされません。
どのような考えですか? Here is a link to a test project showing my issue
可能であれば、テストプロジェクトを投稿してください。 – azizbekian
確かです。私の応答を編集して、テストプロジェクトへのリンクを追加しました。 – Alex