7

Recentemente ho installato i più recenti strumenti di Google per il mio progetto Android:Android build tools 1.1.0, cartella test unità?

buildscript { 
     repositories { 
     jcenter() 
     mavenCentral() 
     } 
     dependencies { 
     classpath 'com.android.tools.build:gradle:1.1.0' 
     } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
    defaultConfig { 
     applicationId "com.xxx" 
     minSdkVersion 10 
     targetSdkVersion 21 
     versionCode 200 
     versionName "2.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    signingConfigs { 
     debug { 
      ... 
     } 
     release { 
      ... 
     } 
    } 
    buildTypes { 
     release { 
      ... 
     } 
     debug { 
      ... 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:21.0.3' 

    // ---- Tests with robolectric 
    testCompile 'com.google.guava:guava:14.0.1' 
    testCompile 'junit:junit:4.+' 
    testCompile 'org.robolectric:robolectric:2.4' 
    testCompile 'org.mockito:mockito-all:2.0.2-beta' 

    // ---- Tests with Espresso 
    androidTestCompile ('com.android.support.test.espresso:espresso-core:2.0') { 
     exclude module: 'hamcrest-core' 
    } 
    androidTestCompile 'org.hamcrest:hamcrest-core:1.1' 
    androidTestCompile 'org.hamcrest:hamcrest-integration:1.1' 
    androidTestCompile 'org.hamcrest:hamcrest-library:1.1' 
    androidTestCompile ('com.android.support.test:testing-support-lib:0.1') { 
     exclude module: 'hamcrest-core' 
    } 
    androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0' 
    androidTestCompile('junit:junit-dep:4.10') { 
     exclude module: 'hamcrest-core' 
    } 
} 

Dove prima che ho usato per usare com.github.jcandksolutions.gradle:android-unit-test:2.1.1 per eseguire i miei test robolectric nella JVM. Come dice google per i loro nuovi strumenti di compilazione: "Nuove cartelle di origine riconosciute come unit test: src/test/java, src/testDebug/java, src/testMyFlavor/java ecc." Ma come potete vedere qui sotto, la mia cartella test non è riconosciuta come cartella sorgente. Ha funzionato con com.github.jcandksolutions.gradle:android-unit-test:2.1.1, ma non più con i nuovi strumenti di compilazione:

enter image description here

Quello che mi manca qui? Grazie

risposta

6

Ho trovato la soluzione che è quella di passare tra Test Artifacts nell'angolo sinistro dell'IDE. Su questo schermo sono disponibili solo "Test di strumentazione Android" perché ho eseguito il downgrade dei miei strumenti Android ma con gli strumenti 1.1.0 e versioni successive dovresti vedere diversi tipi di test per far sì che l'IDE li riconosca come cartelle di origine.

enter image description here

+0

Questa è la risposta giusta .. – StefMa

3

Basta seguire http://tools.android.com/tech-docs/unit-testing-support per abilitare il test dell'unità sperimentale e passare l'artefatto di test ai test di unità. quindi la cartella di test dell'unità verrà riconosciuta.

quando si hanno più problemi, forse questo ti aiuterà http://nenick-android.blogspot.de/2015/02/android-studio-110-beta-4-and.html

+0

Grazie per tesi di risorse, ma non riesco ancora a mettere le prove di lavoro. Ho capito come "marcare" la cartella di test come cartella sorgente nell'IDE, ma quando corro: './gradlew clean test' Ottengo errori come questo:' errore: impossibile trovare il simbolo Utente utente = UserBuilder.fromJSON (null) ; '. Dove le mie classi di test non riescono a trovare i pacchetti dalla mia cartella principale. –

+0

È possibile aggiornare con l'errore completo? Hai aggiunto '@ Config' ai tuoi test o hai implementato un runner personalizzato? –

+0

Ho fatto sì. Non riesco a farlo funzionare –

4

Ho avuto un problema simile l'altro giorno, se non che sono stato in grado di eseguire test Robolectric ok in Android Studio, ma non ha funzionato dalla riga di comando . Quello che ha funzionato per me è il seguente.

1) Eseguire ./gradlew clean assembleDebug test (invece di clean test)

(ora, si troverebbe fonte da pacchetti principali, ma vorrei avere this problem invece)

2) Aggiunto questo al file build.gradle : android.sourceSets.test.java.srcDirs += "build/generated/source/r/debug"

+0

Ora ricevo errori come questo 'com.xxx.network.requests.AuthenticateTest> callbackForNewUser FAILED java.lang.NullPointerException'. Penso che per ora attaccherò solo al vecchio plugin per Android-test e aspetto una versione più stabile degli strumenti di gradle build. –

0

Se si tratta di un uso a impostare un progetto caldaia piastra consentendo l'uso di test unitari e test Espresso dall'uso di commutazione costruire varianti. Non è necessario l'utilizzo di plug-in di terze parti con questo.

https://github.com/hitherejoe/Android-Boilerplate