2015-11-17 1 views
6

Sto seguendo il tutorial this per aggiungere test di integrazione env al mio progetto Android. ho creare src/integrationTest/java e src/integrationTest/resources dirs e poi ho aggiunto questo al mio build.gradle:Impostazione test di integrazione nel progetto basato su Android Gradle

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

Ma quando la sincronizzazione dei file Gradle ottengo questo errore:

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

cosa significa? Come posso risolverlo?

Grazie

EDIT

ho appena provato con android.sourceSets.main.output e android.sourceSets.test.output invece di main.output e test.output rispettivamente:

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

Ed ora ottengo questo errore:

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

risposta

4

Risolto! In realtà, queste righe non devono essere nella configurazione del set sorgente, ma nell'attività che esegue i test di integrazione. Ora, il mio build.gradle assomiglia:

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

Usando 'integrationTest (gruppo: 'verifica', tipo: Test)' pone il compito nello stesso gruppo come gli altri compiti. – ThomasW

+0

Questa soluzione risolve il problema di base per me, ma sto utilizzando Android Studio 1.5.2 e sembra che l'integrazione sia incompleta. Android Studio non colora il codice correttamente e non mostra errori di compilazione in linea. (È necessario compilare il codice per vedere dove sono gli errori.) – ThomasW

+0

Sto scoprendo che quando cerco di usarlo, le classi dell'applicazione non sono disponibili per le classi di test. C'è qualcosa che stai facendo per farlo funzionare? – ThomasW