support studio not nonnull annotation java android unit-testing tdd android-espresso

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



android support annotation nullable (3)

Soy nuevo en Android y he visto 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?


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, ¿hace realmente algo excepto dejar una nota para otros desarrolladores? ¿Impone algo? ¿Hay 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 anotaciones específicas.

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 size [small | medium | large] 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'' } }

Vea esta publicación en el blog para más detalles.


También puede anotar las pruebas de la unidad POJO con @Category(MediumTest.class) o @Category(LargeTest.class) , etc. definiendo sus propias Categories ; consulte el repositorio de las test-categories para ver un ejemplo


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

  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 el cuadro que está ejecutando pruebas.
  3. Grande: accede a sistemas de archivos externos, redes, etc.

Según el blog de Desarrolladores de Android , una pequeña prueba debe tomar <100ms, una prueba mediana <2s y una prueba grande <120s.

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