Qual è lo scopo delle annotazioni @SmallTest, @MediumTest e @LargeTest in Android?


99

Sono nuovo su Android e ho visto codice di esempio che utilizza queste annotazioni. Per esempio:

@SmallTest
public void testStuff() {
    TouchUtils.tapView(this, anEditTextView);
    sendKeys("H E L P SPACE M E PERIOD");
    assertEquals("help me.", anEditTextView.getText().toString());
}

Che cosa fa quell'annotazione?

Risposte:


9

In aggiunta alla risposta di Davidann e principalmente alla domanda di OP nel commento:

Nel contesto del codice sopra, in realtà FA qualcosa tranne lasciare una nota per altri sviluppatori? Fa rispettare qualcosa? Esistono strumenti che utilizzano questa annotazione? Qual è lo scopo nello sviluppo di Android?

È possibile eseguire un gruppo di test annotati con annotazioni specifiche.

Dalla documentazione di AndroidJUnitRunner :

Esecuzione di una dimensione di test specifica, ad esempio annotata con SmallTest o MediumTest o LargeTest :

adb shell am instrument -w -e size [small | medium | large] com.android.foo/android.support.test.runner.AndroidJUnitRunner

Puoi anche impostare questi parametri tramite gradle:


    android {
        ...
        defaultConfig {
            ...
            testInstrumentationRunnerArgument 'size', 'Large'
        }
    }

Via gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Vedi il post del blog di Doug Stevenson e questo post del blog per maggiori dettagli.


OK, quindi in breve posso eseguire solo la suite di test @SmallTest con adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; grazie
kosiara - Bartosz Kosarzycki

Come si specifica l'annotazione in un comando gradle? Ad esempio, qualcosa del tipo:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE

@ Mr-IDE, hai ricevuto la risposta?
John

138

Questo post del blog lo spiega meglio. Fondamentalmente, è il seguente:

grafico di prova

  1. Piccolo: questo test non interagisce con alcun file system o rete.
  2. Medio: accede ai file system sulla scatola che esegue i test.
  3. Grande: accede a file system esterni, reti, ecc.

Per il blog degli sviluppatori Android , un test piccolo dovrebbe richiedere <100 ms, un test medio <2 secondi e un test grande <120 secondi.

Vedi questa pagina (cerca "@SmallTest") su come specificare quali test devono essere eseguiti.


13
Capisco (e ricordo di aver letto quell'articolo il mese scorso). Ma nel contesto del codice sopra, in realtà FARE qualcosa tranne lasciare una nota per gli altri sviluppatori? Fa rispettare qualcosa? Esistono strumenti che utilizzano questa annotazione? Qual è lo scopo nello sviluppo di Android?
Eric Palakovich Carr

3
@Eric The Android TestRunner ti consente di specificare la dimensione dei test da eseguire.
Cheryl Simon

7
C'è un blog più recente di Google su questo argomento: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29

1
@SmallTest è deprecato
Neon Warge

1
@NeonWarge usa import android.support.test.filters. [Small] Test;
Alexander Sidikov Pfeif

1

Puoi anche annotare gli unit test POJO con @Category(MediumTest.class)o @Category(LargeTest.class), ecc. Definendo le tue categorie : vedi il repository delle categorie di test per un esempio

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.