À quoi servent les annotations @SmallTest, @MediumTest et @LargeTest dans Android?

99

Je suis nouveau sur Android et j'ai vu un exemple de code utilisant ces annotations. Par exemple:

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

Que fait cette annotation?

Eric Palakovich Carr
la source

Réponses:

9

En complément de la réponse de Davidann et principalement de la question d'OP dans le commentaire:

Dans le contexte du code ci - dessus, est - ce vraiment DO quoi que ce soit , sauf laisser une note pour d' autres développeurs? Est-ce qu'il applique quelque chose? Existe-t-il des outils qui utilisent cette annotation? Quel est le but du développement Android?

Vous pouvez exécuter un groupe de tests annotés avec une annotation spécifique.

À partir de la documentation AndroidJUnitRunner :

Exécution d'une taille de test spécifique, c'est-à-dire annotée avec SmallTest ou MediumTest ou LargeTest :

adb shell am instrument -w -e taille [petit | moyen | grand] com.android.foo/android.support.test.runner.AndroidJUnitRunner

Vous pouvez également configurer ces paramètres via gradle:


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

Via gradle:

-Pandroid.testInstrumentationRunnerArguments.size=small

Voir l'article de blog de Doug Stevenson ainsi que cet article de blog pour plus de détails.

azizbek
la source
OK, donc en bref je ne peux exécuter que la suite de tests @SmallTest avec adb shell am instrument -w -e size small com.android.foo/android.support.test.runner.AndroidJUnitRunner; merci
kosiara - Bartosz Kosarzycki
Comment spécifier l'annotation dans une commande gradle? Par exemple, quelque chose comme:./gradlew connectedDebugAndroidTest -size MediumTest
Mr-IDE
@ Mr-IDE, avez-vous la réponse?
Jean
138

Ce billet de blog l' explique le mieux. En gros, c'est le suivant:

tableau de test

  1. Petit: ce test n'interagit avec aucun système de fichiers ou réseau.
  2. Moyen: accède aux systèmes de fichiers sur la boîte qui exécute des tests.
  3. Large: accède aux systèmes de fichiers externes, aux réseaux, etc.

Selon le blog des développeurs Android , un petit test devrait prendre <100 ms, un test moyen <2 s et un test important <120 s.

Consultez cette page (recherchez "@SmallTest") pour savoir comment spécifier les tests à exécuter.

David Weiser
la source
13
Je vois (et je me souviens avoir lu cet article le mois dernier). Mais dans le contexte du code ci-dessus, fait-il réellement autre chose que de laisser une note aux autres développeurs? Est-ce qu'il applique quelque chose? Existe-t-il des outils qui utilisent cette annotation? Quel est le but du développement Android?
Eric Palakovich Carr
3
@Eric L'Android TestRunner vous permet de spécifier la taille des tests à exécuter.
Cheryl Simon
7
Il existe un nouveau blog de Google à ce sujet: plus.google.com/+AndroidDevelopers/posts/TPy1EeSaSg8
k29
1
@SmallTest est obsolète
Neon Warge
1
@NeonWarge utilise import android.support.test.filters. [Small] Test;
Alexander Sidikov Pfeif
1

Vous pouvez également annoter les tests unitaires POJO avec @Category(MediumTest.class)ou @Category(LargeTest.class), etc. en définissant vos propres catégories - voir le référentiel test-categories pour un exemple

Rhisiart
la source