Come eseguire un semplice JUnit4 test in Android Studio 1.1?

Ho un progetto Android che mostra “Ciao Mondo”. E ‘ stata creata dal Vuoto “Attività” modello da Android Studio.

Quindi aggiungere/creare una nuova classe java nel mio pacchetto di applicazione (lo stesso pacchetto che ha la mia attività). Io la chiamo la Forma e aggiungere un semplice costruttore

public class Shape {
    public Shape(int i){
        if (i==0){
            throw new IllegalArgumentException("Cant have 0");
        }
    }
}

Grande. Ora ho una classe che non è di toccare Android a tutti, e voglio unit test. Che cosa devo fare dopo?

Questo è dove la mia domanda si ferma. Qui di seguito farò passare attraverso quello che ho provato.

Si prega di notare che ho davvero mai provato prima in Android o Java. Mi scusi per il “rookie” errori.

  1. Mentre nel Shape.java vado a “Navigare” > “Test”
  2. Premere enter per selezionare “Creazione di un nuovo Test”
  3. Ottenere questo popup e selezionare JUNIT4.

Come eseguire un semplice JUnit4 test in Android Studio 1.1?

  1. Mi ha colpito poi il pulsante di correzione per risolvere la libreria non viene trovato
  2. Ottengo questo popup

Come eseguire un semplice JUnit4 test in Android Studio 1.1?

  1. Io non sono davvero sicuro di cosa selezionare, quindi selezionare l’impostazione predefinita/evidenziato.
  2. Scrivo il mio test

    package com.eghdk.getjunit4towork;
    
    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    public class ShapeTest {
        @Test(expected = IllegalArgumentException.class)
        public void testShapeWithInvalidArg() {
            new Shape(0);
        }
    }
  3. A questo punto, io non sono davvero sicuro di come eseguire le mie prove, ma provate a fare questo:
    Come eseguire un semplice JUnit4 test in Android Studio 1.1?

  4. Ottengo questi errori durante l’esecuzione

    Errore:(3, 17) Gradle: errore: pacchetto org.junit non esiste

    Errore:(5, 24) Gradle: errore: pacchetto org.junit non esiste

    Errore:(8, 6) Gradle: errore: impossibile trovare il simbolo della classe di Test

InformationsquelleAutor EGHDK | 2015-03-03



4 Replies
  1. 34

    Dal momento che Android Studio 1.1, non c’è (sperimentale) test di unità supporto. Un paio di citazioni da pagina:

    Si dovrà specificare il test dipendenze nel costruire.gradle
    file del tuo android modulo. Per esempio:

    dependencies {
      testCompile 'junit:junit:4.12'
      testCompile "org.mockito:mockito-core:1.9.5"
    }

    Di utilizzare i test di unità supporto COME, devi fare i seguenti passaggi:

    1. Una versione di aggiornamento.gradle per utilizzare android gradle plugin versione 1.1.0-rc1 o poi (manualmente nel costruire.gradle file o nell’interfaccia utente in File > Struttura del Progetto)

    2. Aggiungere la sperimentazione necessaria dipendenze di app/costruire.gradle (vedi sopra).

    3. Attivare l’unità di test funzione in Impostazioni > Gradle > Sperimentale.

    4. Di sincronizzazione del tuo progetto.

    5. Aprire il “Costruire varianti” la finestra dello strumento (a sinistra) e modificare il test artefatto “Unit test”.

    6. Creare una directory per il testing del codice sorgente, cioè src/test/java. È possibile farlo da riga di comando o mediante il
      Visualizzazione del progetto in Progetto la finestra dello strumento. La nuova directory dovrebbe essere
      evidenziata in verde, a questo punto. Nota: i nomi della fonte di prova
      le directory sono determinati dal gradle plugin basato su una convenzione.

    7. Crea il tuo test. Si può fare questo con l’apertura di una classe, fare clic sul suo nome e selezionando “Vai a > Test”. Aggiungere un po di test
      casi.
    8. Fare clic con il pulsante nuova classe di test o di un metodo e selezionare “Esegui …”.
    9. (Opzionale) È possibile diminuire il tempo di compilazione utilizzando Gradle direttamente. Per fare questo, andare al menu e selezionare “Edit
      configurazioni”. C’, trovare il valore predefinito JUnit modello, rimuovere il
      “Fare” prima fase di lancio e di aggiungere un “Gradle consapevole di fare il” passo invece
      (lasciare il nome dell’attività vuota).

    È importante sapere che ci sono due tipi di test: androidTest e pianura test.

    • androidTest è principalmente per i test si esegue su un emulatore o un dispositivo, come strumentazione per test. Dalla riga di comando, è possibile utilizzare ./gradlew connectedCheck per l’esecuzione di questi.
    • test è per le prove non si desidera eseguire su un dispositivo, come l’unità di test che hai scritto. Si esegue ./gradlew test eseguire questi test.

    Come indicato nel preventivo, si passa tra androidTest e test in Android Studio, cambiando il test artefatto.

    Naturalmente, si è preferito non eseguire test su un dispositivo o un emulatore, visto che questo accelera il processo di testing un sacco. Con il nuovo sperimentali di test di unità supporto, è possibile accedere a prototipi di API di Android senza l’uso di un dispositivo. Questo consente di spostare più prove da androidTest per test.

    • Sembra che stai parlando di Android specifica unità di test che devono essere eseguiti sul dispositivo. Anche prima di questa modifica, COME e Android per Gradle plugin 1.1 ho pensato che si potrebbe ancora correre unità di base test sulla vostra macchina locale (nessun dispositivo android). Quello che è stato detto, anche se COME 1.1, mi sento come non ho per abilitare la funzionalità sperimentali per ottenere un semplice java test di unità. La mia domanda è per sempre quelle (java semplici test di unità) di lavoro. Siete a conoscenza di come ottenere il lavoro?
    • Prima di 1.1, ho usato il Android Unità di Test e Android Unità di Studio, Test plugins, che consentono esattamente questo. Naturalmente, questi plugin sono stato deprecato in favore della nuova funzionalità aggiunta.
    • Hmm… davvero? Errore mio allora. Ero certo che ho sentito la gente parlare di come si potrebbe fare pianura unit test con niente Android specifica in classe con Junit e nessuna altra configurazione.
    • Forse stavano utilizzando JUnit3. Dal momento che la strumentazione di uso di prove JUnit3, posso immaginare questi semplici test sarebbe stato scelto come bene. Solo speculazione, però.
    • Ha un senso. Grazie. Ultima domanda che ho è perché c’è un src/main e src/androidTest? Dal momento che nella sua risposta dice “Creare una directory per il testing del codice sorgente”. Non è che la cartella è già creato per il nuovo Android Studio progetti?
    • Se si è già creato, è possibile utilizzare, naturalmente. Io tendo a creare progetti da zero, quindi devo creare io. L’esistenza di queste cartelle hanno a che fare con i tipi di generazione, come spiegato qui: tools.android.com/tech-docs/new-build-system/…
    • Capito. Ero solo confuso perché Eclipse mai fatto e Android Studio non è fuori dalla scatola. E ‘ l’immagine sotto #8. Si può vedere che i due pacchetti sono apparentemente creato, ma uno è utilizzato per le prove. Posso chiedere un altro MODO domanda solo per avere il completo chiarimento su di esso.
    • Uomo ho trascorso 3 giorni in questo!
    • La proposta di diminuire il tempo di esecuzione di test JUnit è stato impressionante!
    • Questa soluzione sembra non funzionare più per Android Studio 1.2. Inoltre, la tua dichiarazione di “Naturalmente, si è preferito non eseguire test su un dispositivo o un emulatore, visto che questo accelera il processo di testing molto.” non è pratico. Il test dovrebbe essere svolta principalmente su un dispositivo reale dove si sta andando a vedere i risultati reali.
    • in esecuzione normale codice Java su un normale JVM contro un vero e proprio dispositivo non fa alcuna differenza pratica. Con riferimento all’utilizzo delle API di Android, tuttavia, avrete bisogno di un dispositivo reale, naturalmente.
    • Molto ben fatto! hai fatto un ottimo lavoro di differenziare il InstrumentationTest e UnitTest io.e androidTest & test. Grazie nhaarman 🙂
    • Non i punti di interruzione(debug) funziona con UnitTest? Anche i Registri non sono in stampa!
    • I punti di interruzione del lavoro per me. android.util.Log tuttavia non funziona dato che non c’è ambiente Android quando è sufficiente eseguire il test di unità. Per questo scopo si possono utilizzare System.out.print* famiglia di metodi.
    • +1 Per costruire varianti. Tutti questi passaggi è stato lì, apparentemente come impostazioni predefinite con le nuove versioni di studio. Ho solo bisogno di impostare il costruire e loro varianti (Y)

  2. 4

    Per android studio 1.2 o superiore, io sono questa risposta, dal momento che questo è uno dei primi ranking di google e questo è un ottimo e MOLTO facile da seguire tutorial su come impostare le unità di test con Android Studio, questo è il link: https://io2015codelabs.appspot.com/codelabs/android-studio-testing#1

    Dopo sprecare 2 ore cercando di eseguire il test ho finalmente fatto con il link di cui sopra, spero sia utile per voi come per me.

    • grande questo ha funzionato perfettamente .Grazie mille .
    • In Android Studio 2.2.1, sotto di Costruire Varianti, il “Test di Artefatto:” selezione di dialogo non viene visualizzata, solo la tabella con il Modello e Costruire Variante colonne. Quindi, o si trova da qualche altra parte, o non avete bisogno di per selezionare quella che più.
  3. 3

    Oggi Android Studio (corrente ver. 1.4) è pieno di test di Unità supporto senza soluzioni alternative. Come suggerito nel generata automaticamente ExampleUnitTest:

    To work on unit tests, switch the Test Artifact in the Build Variants view.

    Come eseguire un semplice JUnit4 test in Android Studio 1.1?

  4. 0

    Andare in settings poi in strumenti di costruzione quindi gradle e sperimentali. Sperimentale deselezionare abilita tutti i test artefatti. Thats game over

Lascia un commento