我希望這只是我在這裏做錯了。我試圖用Dagger 2.0爲我的JUnit測試注入依賴項(而不是Espresso測試,只是純粹的JUnit)。所以,我有一個'main'java模塊和一個'test'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