2015-11-17 5 views
6

Ich bin dabei this Tutorial, um Integrationstest env zu meinem Android-Projekt hinzuzufügen. Ich habe src/integrationTest/java und src/integrationTest/resources dirs erstellen und dann habe ich das meine build.gradle hinzugefügt:Einrichten von Integrationstests in Android Gradle-basierten Projekt

sourceSets { 
    integrationTest { 
     java { 
      compileClasspath += main.output + test.output 
      runtimeClasspath += main.output + test.output 
      srcDir file('src/integrationTest/java') 
     } 
     resources.srcDir file('src/integrationTest/resources') 
    } 
} 

Aber wenn ich Gradle Dateien synchronisieren bekomme ich diesen Fehler:

Error:(134, 0) No such property: main for class: org.gradle.api.internal.file.DefaultSourceDirectorySet Possible solutions: name

Was bedeutet dies? Wie kann ich es lösen?

Dank

EDIT

ich mit android.sourceSets.main.output und android.sourceSets.test.output nur versucht haben, statt main.output und test.output jeweils:

sourceSets { 
    integrationTest { 
     java { 
      compileClasspath += android.sourceSets.main.output + android.sourceSets.test.output 
      runtimeClasspath += android.sourceSets.main.output + android.sourceSets.test.output 
      srcDir file('src/integrationTest/java') 
     } 
     resources.srcDir file('src/integrationTest/resources') 
    } 
} 

Und jetzt bekomme ich diesen Fehler:

Error:(136, 0) Could not find property 'output' on source set main.

Antwort

4

Gelöst! Eigentlich müssen diese Zeilen nicht in der Quellsatzkonfiguration sein, sondern in der Aufgabe, die Integrationstests ausführt. Nun, mein build.gradle wie folgt aussieht:

sourceSets { 
     integrationTest { 
      java.srcDir file('src/integrationTest/java') 
      resources.srcDir file('src/integrationTest/resources') 
     } 
    } 

    configurations { 
     integrationTestCompile.extendsFrom testCompile 
    } 

    task integrationTest(type: Test) { 
     testClassesDir = sourceSets.integrationTest.output.classesDir 
     classpath = sourceSets.integrationTest.runtimeClasspath 
    } 
+0

Mit 'integrationTest (Gruppe: 'Überprüfung', Typ: Test)' die Aufgabe in der gleichen Gruppe wie die anderen Aufgaben stellt. – ThomasW

+0

Diese Lösung löst das grundlegende Problem für mich, aber ich benutze Android Studio 1.5.2 und es scheint, dass die Integration unvollständig ist. Android Studio färbt den Code nicht korrekt und zeigt keine Kompilierungsfehler inline an. (Sie müssen den Code kompilieren, um zu sehen, wo die Fehler liegen.) – ThomasW

+0

Ich finde, dass die Anwendungsklassen für die Testklassen nicht verfügbar sind, wenn ich versuche, dies zu verwenden. Gibt es etwas, was du tust, um das zum Laufen zu bringen? – ThomasW

Verwandte Themen