5

Ho le mie dipendenze dei moduli impostati in questo modo nel mio file build.gradle:Come mantenere le librerie di test Android separate dalle librerie delle applicazioni in Android Studio?

dependencies 
{ 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v4:22.2.0' 
    androidTestCompile fileTree(dir: 'libs/test', include: ['*.jar']) 
} 

Dentro le mie librerie cartella ho tutte le librerie necessarie a costruire la mia domanda. Ho inserito le librerie necessarie per eseguire i test in una sottocartella chiamata "test"

Questo sembra funzionare come il mio codice viene compilato e posso creare il mio modulo. Quando tento di eseguire uno dei miei test, tuttavia, non riesce a trovare le librerie di prova che ho tentato di includere. Gli errori nella console Gradle rimandano effettivamente a parti del mio codice che non mostrano errori.

Inoltre, io ho le mie prove impostato correttamente, perché posso farli correre spostando i vasi necessari nella cartella libs e cambiare le mie dipendenze per:

dependencies 
{ 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v4:22.2.0' 
} 

Ma poi non lo faccio davvero vedere il punto di AndroidTestCompile se non funziona. Preferirei anche non includere questi file jar nel mio apk se non dovessi farlo.

Se aiuta, sto usando Android studio versione 1.2.2 e il plugin Gradle versione 1.2.3.

Grazie in anticipo per qualsiasi aiuto.

+0

sono in esecuzione test di unità, o connessa Android (quelli che richiedono un dispositivo Android o un emulatore)? –

+0

qual è la dichiarazione di importazione che stai utilizzando per fare riferimento ai barattoli di prova? – therobotichumanoid

+0

Sto eseguendo test Android connessi. Una delle importazioni nel mio codice di test appare come "import com.robotium.solo.Solo;" e il file jar di robotium si trova nella directory libs/test. –

risposta

5

Vedere di seguito l'esempio.

creare test delle cartelle parallelo al src cartella. crea tutti i casi di test in quella cartella. Se si crea la cartella in un altro percorso è necessario fare richiesta di questo. (Aggiunto in codice.)

dependencies { 
    androidTestCompile files('libs/dexmaker-1.1.jar') 
    androidTestCompile files('libs/org.mockito:mockito-core:3.9.5') 
    androidTestompile files('espresso-1.0-SNAPSHOT-bundled.jar') 
    } 

defaultConfig { 

    testApplicationId "xxx.xx.abc" 
    testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner" 

} 

sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 

    } 

    // Move the tests to tests/java, tests/res, etc... 
    instrumentTest.setRoot('tests') 

    instrumentTest { 

     java.srcDirs = ['tests/src'] 

    } 

    androidTest.setRoot('tests') 
    androidTest.java.srcDirs = ['tests/src'] 
+0

Grazie! Penso che il mio problema fosse che avevo la configurazione di default di androidTest in src/androidTest, ma avevo la mia directory principale come "src". Presumo che ci debba essere stato un conflitto lì. Questo sembrava risolverlo. –

1

Si dovrebbe usare sourceSets per mantenere il vostro apk libero dalle librarys prova Gradle User Guide Utilizzare il 'principale' uno per il vostro codice di produzione e uno la 'androidTest' per le prove, Gradle poi aggiunge automaticamente le fonti specificate.

sourceSets { 
     main { 
      ... 
     } 
     androidTest { 
      ... 
     } 
    } 
+0

Devo creare il mio apk al di fuori di Android Studio per mantenerlo ancora separato? Sembra che quando carico il mio apug di debug carichi ancora le librerie di test. Grazie per l'aiuto finora. –

Problemi correlati