2017-01-02 1 views
4

Ich versuche, Dagger2 in meinem Android-Projekt zu verwenden, wie in hitherejoe/Android-Boilerplate erläutert. Während ich das Projekt einrichte, habe ich einen Fehler bei der Bauzeit bekommen.Verwenden Sie Dagger generierten Testcode in Android

Error:(30, 26) error: cannot find symbol variable DaggerTestComponent 

Nachdem in der Dokumentation zu graben und generierten Code dachte ich, dass Code aus nicht im Debug-Generierung (/ app/build/erzeugt/Quelle/apt/debug /) Ordner aber in Test/Debug (/ app/build/generated/source/apt/test/debug). So in meinem Test-Quellordner kann die generierte DaggerTestComponent nicht importieren.

Gibt es Hinweise, wie man den Test/Debug-Ordner in die Quelle einfügt? Meine Abhängigkeiten sind wie folgt

testCompile 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
compile "com.google.dagger:dagger:$DAGGER_VERSION" 
apt "com.google.dagger:dagger-compiler:$DAGGER_VERSION" 
provided 'javax.annotation:jsr250-api:1.0' 
compile 'javax.inject:javax.inject:1' 
testApt "com.google.dagger:dagger-compiler:$DAGGER_VERSION" 

Vielen Dank im Voraus.

+1

Was ist Ihr Problem? Sie sollten Code, der in 'test/debug' generiert wurde, nur aus dem' test'-Ordner referenzieren. Bitte geben Sie weitere Details an. Wie versuchen Sie, generierten Code zu verwenden? Wo wird der Verbraucher von generiertem Code platziert? Wo wird generierter Code platziert? Stellen Sie eine vereinfachte Version Ihres Codes bereit. – MyDogTom

+0

@MyDogTom Ich kann den UI-Test nicht ausführen, da eine Dagger Generated-Klasse im Test/Debug-Ordner benötigt wird. Ich kann diese Klasse nicht importieren, da das Android-Studio sie nicht erkennt. Irgendeine Idee, wie man es einschließt? – Chrishan

+0

Was meinen Sie mit UI-Tests? Instrumentierungstests oder JVM-Test mit Robolectric? Im Falle von Instrumentation ist es der 'androidTest' Ordner und du brauchst 'androidTestApt' dafür + setze deinen Code in den richtigen Ordner + führe 'assembleAndroidTest' aus. Ansonsten, schwer zu erraten, ohne Details :( – MyDogTom

Antwort

5

ich hatte das gleiche Problem ... Ich arbeitete um es durch die erzeugten Testquellverzeichnis hinzufügen:

android { 
    sourceSets { 
     // add dagger generated files (works only with debug build) 
     test.java.srcDirs += ['build/generated/source/apt/test/debug'] 
    } 
} 
+0

Vielen Dank. Das funktioniert gut für das Problem, aber ich bekomme doppelte Klasse Problem.Ich werde detaillierte Fehler nach dem Graben in es. – Chrishan

-1

Verwendung:

// Dagger 2 
provided "javax.inject:javax.inject:1" 
compile "com.google.dagger:dagger:$DAGGER_VERSION" 
apt "com.google.dagger:dagger-compiler:$DAGGER_VERSION" 
+0

Danke @Matias für die Antwort. Code generiert in Test/Debug-Ordner, die nicht von Android-Studio als Quellordner erkannt wird. Eine Idee, wie Sie das lösen? – Chrishan