¿Cuál es el propósito de las anotaciones @SmallTest, @MediumTest y @LargeTest en Android?

99

Soy nuevo en Android y he visto un código de ejemplo con estas anotaciones. Por ejemplo:

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

¿Qué logra esa anotación?

Eric Palakovich Carr
fuente

Respuestas:

9

Como una adición a la respuesta de Davidann y principalmente a la pregunta de OP en el comentario:

En el contexto del código anterior, ¿realmente HACE algo excepto dejar una nota para otros desarrolladores? ¿Hace cumplir algo? ¿Existe alguna herramienta que utilice esta anotación? ¿Cuál es su propósito en el desarrollo de Android?

Puede ejecutar un grupo de pruebas anotadas con una anotación específica.

De la documentación de AndroidJUnitRunner :

Ejecutar un tamaño de prueba específico, es decir, anotado con SmallTest o MediumTest o LargeTest :

adb shell am instrument -w -e tamaño [pequeño | mediano | grande] com.android.foo/android.support.test.runner.AndroidJUnitRunner

También puede configurar esos parámetros a través de gradle:


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

A través de gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Consulte la publicación del blog de Doug Stevenson y esta publicación del blog para obtener más detalles.

azizbeko
fuente
Bien, en resumen, solo puedo ejecutar el conjunto de pruebas @SmallTest con adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; gracias
kosiara - Bartosz Kosarzycki
¿Cómo especificamos la anotación en un comando de Gradle? Por ejemplo, algo como:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE
@ Mr-IDE, ¿obtuvo la respuesta?
John
138

Esta publicación de blog lo explica mejor. Básicamente, es lo siguiente:

tabla de prueba

  1. Pequeño: esta prueba no interactúa con ningún sistema de archivos o red.
  2. Medio: accede a los sistemas de archivos en la caja que está ejecutando pruebas.
  3. Grande: accede a sistemas de archivos externos, redes, etc.

Según el blog de desarrolladores de Android , una prueba pequeña debe durar <100 ms, una prueba media <2 segundos y una prueba grande <120 segundos.

Consulte esta página (busque "@SmallTest") sobre cómo especificar qué pruebas se ejecutan.

David Weiser
fuente
13
Ya veo (y recuerdo haber leído ese artículo el mes pasado). Pero en el contexto del código anterior, ¿realmente HACE algo excepto dejar una nota para otros desarrolladores? ¿Hace cumplir algo? ¿Existe alguna herramienta que utilice esta anotación? ¿Cuál es su propósito en el desarrollo de Android?
Eric Palakovich Carr
3
@Eric El TestRunner de Android le permite especificar el tamaño de las pruebas a ejecutar.
Cheryl Simon
7
Hay un blog más reciente de Google sobre este asunto: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29
1
@SmallTest está en desuso
Neon Warge
1
@NeonWarge use import android.support.test.filters. Prueba [pequeña];
Alexander Sidikov Pfeif
1

También puede anotar las pruebas unitarias de POJO con @Category(MediumTest.class)o @Category(LargeTest.class), etc. definiendo sus propias categorías ; consulte el repositorio de categorías de prueba para ver un ejemplo

Rhisiart
fuente