Hallo, ich habe das folgende Problem mit Dolch 2 in meinem (Teil-) Projekt, das vollständig pure-Java mit keine android Abhängigkeiten ist.Inject UnitTest-Klassen
Wenn ich die Komponententests unter Verwendung einiger Mocks (z. B. Injizieren eines Mock Network Connectors, der statische Strings zurückgibt) über die Gradle-Ansicht oder Konsole (businessModule: test) ausführen, gibt es keine Probleme und alle Tests sind erfolgreich. Aber wenn ich die Dateien in Android Studio öffne, sagt das Studio, dass die Rückgabe meiner DaggerMockComponent nicht mit dem Zieltyp kompatibel ist. Wenn ich die generierte Komponenten-Implementierung öffne, sehe ich, dass Android Studio denkt, dass die TestUnit-Klasse (und die Schnittstelle MockComponent) nicht verfügbar ist, also weiß es nicht, was die inject-Methode zurückgibt.
Ich habe folgende gradle Datei:
Plugin anwenden: 'java'
// allow inject of core into core. https://github.com/griffio/dagger2-example
sourceSets {
dagger {
java {
srcDirs = ['src/dagger/java']
}
}
daggerTest {
java {
srcDirs = ['src/daggerTest/java']
}
}
}
configurations {
compileDagger
}
compileJava {
description = "dagger annotation processor is loaded automatically from classpath"
sourceSets.dagger.java.srcDirs*.mkdirs()
classpath += configurations.compileDagger
options.compilerArgs += [
'-s', sourceSets.dagger.java.srcDirs.iterator().next()
]
}
compileTestJava {
//dependsOn compileDaggerTestJava
description = "dagger annotation processor is loaded automatically from classpath"
sourceSets.daggerTest.java.srcDirs*.mkdirs()
classpath += configurations.compileDagger
options.compilerArgs += [
'-s', sourceSets.daggerTest.java.srcDirs.iterator().next()
//'-s src/testDaggerJava'
]
}
task deleteDagger(type: Delete) {
delete 'src/dagger', 'src/daggerTest'
}
clean.dependsOn deleteDagger
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
// Force Java 7 as newer versions can not be processed by dex for API 21
targetCompatibility = '1.7'
sourceCompatibility = '1.7'
[...]
// Dagger for dependency injection
compile 'com.google.dagger:dagger:2.8'
testCompile 'com.google.dagger:dagger:2.8'
compileOnly 'com.google.dagger:dagger-compiler:2.8'
testCompileOnly 'com.google.dagger:dagger-compiler:2.8'
[...]
testCompile 'junit:junit:4.12'
}
Vielen Dank für Ihre Hilfe.