Quel est le but de @SmallTest, @MediumTest et @LargeTest annotations dans Android?
-
10-10-2019 - |
Question
Je suis nouveau à 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());
}
Qu'est-ce que l'annotation accomplir?
La solution
Ce blog explique le mieux. En fait, il est le suivant:
- Petit:. Ce test ne interagit pas avec tout système de fichiers ou d'un réseau
- Moyen:. Accède systèmes de fichiers sur la boîte qui est en cours d'exécution des tests
- Large:. Accède systèmes de fichiers externes, réseaux, etc
Par développeurs Android le blog , un petit test devrait prendre <100 ms, un test moyen <2s, et un grand test <120s.
Voir cette page (recherche de "@SmallTest") sur comment spécifier les tests pour la course.
Autres conseils
En complément réponse de Davidann et surtout question OP dans le commentaire:
Dans le contexte du code ci-dessus, est-ce vraiment DO tout sauf laisser une note pour d'autres développeurs? Est-il rien faire respecter? Y a-t-il des outils qui utilise cette annotation? Quelle est son but dans le développement Android?
Vous pouvez exécuter un groupe de tests portant l'annotation spécifique.
De AndroidJUnitRunner documentation :
Exécution d'une taille de test spécifique à-dire annotés avec SmallTest ou MediumTest ou LargeTest :
Taille -e -w adb instrument am shell [petite | moyenne | grande] com.android.foo/android.support.test.runner.AndroidJUnitRunner
Vous pouvez également configurer les params par gradle:
android {
...
defaultConfig {
...
testInstrumentationRunnerArgument 'size', 'Large'
}
}
Voir ce blog pour plus de détails.
Vous pouvez aussi annoter tests unitaires POJO avec @Category(MediumTest.class)
ou @Category(LargeTest.class)
, etc. en définissant votre propre Catégories - voir le test-catégories de repo pour un exemple