2013-05-19 15 views
24

voglio specificare le dipendenze per i miei test e dopo aver letto il Gradle Dependency Management Basics ho anche se ho potuto solo aggiungere testCompile chiamate ai miei dichiarazioni di dipendenza simile a questo:Specifica le dipendenze di test con il sistema di generazione Gradle Android

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' 
} 

questo, però , non riesce con questo messaggio di errore:

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

Mi manca qualcosa qui?

(Full gradle build file for reference)

risposta

37

Il sistema di generazione di Android non usa il plugin standard di Gradle Java.

Its documentation dice:

Come accennato in precedenza, accanto al sourceSet principale è l'androidTest sourceSet, che si trova di default in src/androidTest/

Inoltre, il sourceSet può essere configurato per avere il proprio dipendenze. Per impostazione predefinita, l'applicazione e le sue dipendenze sono aggiunti al classpath Test App, ma questo può essere esteso con

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

Questo è corretto. Stiamo mantenendo "test" (come set di origine o ambito di dipendenza) per i test locali di jUnit (con Robolectric per esempio) –

+0

@Xav: L'uso di Gradle sembra schizzare via grazie ad Android. Grazie per questo (non vedo l'ora che Maven venga eclissata da Gradle), e bello vedere le domande di risposta di Android SDK Tech Lead su StackOverflow! –

+0

Ho perso questa parte nella documentazione. Grazie mille, @ JBNizet. – passy

2

Giusto per fare questa domanda ha risposto in pieno questo è ciò che è necessario per risolvere il problema . Dal momento che Junit è ricercato per il test e guava locale potrebbe essere ricercato per androidTest DSL Android dovrebbe contenere questo:

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') 
    } 
    : 
} 

L': significa altre dichiarazioni che avete bisogno. Si prega di notare anche che le cartelle possono essere diverse da quelle sopra.

+0

da leggere altre osservazioni questi sono i valori di default anche se non è vero? – RichieHH

+0

Sì, o almeno dovrebbero essere. L'aggiunta di dipendenze a testCompile non è possibile senza questi però. Almeno per me. E questa era la domanda. – javabeangrinder

Problemi correlati