2013-05-19 8 views
24

ich Abhängigkeiten für meine Tests angeben möchten und nach dem Gradle Dependency Management Basics Lesen dachte ich, könnte ich so testCompile Anrufe meiner Abhängigkeit Erklärungen fügen Sie einfach:Angeben von Test Abhängigkeiten mit dem Gradle Android-Build-System

dependencies { 
    compile group: 'com.squareup.dagger', name: 'dagger', version: '1.0.0' 


    testCompile group: 'junit', name: 'junit', version: '4.11' 
    testCompile group: 'com.squareup', name: 'fest-android', version: '1.0.1' 
} 

Dies ist jedoch , schlägt mit dieser Fehlermeldung fehl:

> Could not find method testCompile() for arguments [{group=junit, name=junit, version=4.11}] on project ':simstatus'. 

Fehle ich etwas hier?

(Full gradle build file for reference)

Antwort

37

Das Android-Build-System verwendet nicht den Standard Gradle Java Plugin.

Its documentation sagt:

Wie bereits erwähnt, neben dem Haupt sourceSet ist die androidTest sourceSet, befindet sich standardmäßig in src/androidTest/

Zusätzlich kann die sourceSet seine eigene so konfiguriert werden, Abhängigkeiten. standardmäßig die Anwendung und ihre eigenen Abhängigkeiten werden den Test-App Classpath hinzugefügt, aber dies kann mit

dependencies { 
    androidTestCompile 'com.google.guava:guava:11.0.2' 
} 
+9

Das ist richtig. Wir halten "Test" (als Quellensatz oder Abhängigkeitsbereich) für lokale jUnit-Tests (mit Robolectric zum Beispiel) –

+0

@ Xav: Die Verwendung von Gradle scheint dank Android in die Höhe zu schnellen. Danke dafür (ich kann es nicht erwarten, dass Maven von Gradle in den Schatten gestellt wird), und es ist gut zu sehen, wie der Android SDK Tech Lead Fragen zu StackOverflow beantwortet! –

+0

Ich habe diesen Teil in der Dokumentation verpasst. Vielen Dank @JBNizet. – passy

2

einfach erweitert werden, um diese Frage vollständig beantwortet zu machen das ist, was das Problem zu lösen benötigt wird . Da Junit für lokale Tests und Guave gesucht könnte das Android DSL enthalten sollte dies für androidTest gesucht werden:

android { 
    : 
    sourceSets { 
     main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src/main/java'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
       : 
     } 
     test { 
      java.srcDirs = ['src/test/java'] 
      resources.srcDirs = ['src/test/resources'] 
       : 
     } 
     androidTest.setRoot('tests') 
    } 
    : 
} 

Die: bedeutet andere Aussagen, die Sie benötigen. Bitte beachten Sie auch, dass es sich bei den Ordnern um andere als die oben genannten Ordner handeln kann.

+0

Aus dem Lesen anderer Kommentare sind dies die Standardwerte, oder? – RichieHH

+0

Ja, oder zumindest sollten sie sein. Das Hinzufügen von Abhängigkeiten zu testCompile ist jedoch ohne diese nicht möglich. Zumindest für mich. Und darum ging es in der Frage. – javabeangrinder

Verwandte Themen