TechTalk#7 – Android testing best practices

 

TechTalk #7

Android testing best practices

 

# Android Testing best practices

Deux types de tests sont disponibles sous Android Studio 2.+; les tests « purs java » et les tests « Android ». La première méthode vous permettra de tester du code Java sur votre machine. La seconde méthode établie, une connexion avec votre émulateur ou appareil Android, compile et lance une application Android de test dans la Flavor de votre choix.

# Quoi de neuf ?

Depuis 2016, Android Studio supporteJUnit4. Junit4 apporte le support des Matcher, Rules et Classifiersmodernisant ainsi l’écriture et la validation des tests.

# Les « Matchers »

JUnit améliore la construction/ lisibilitédes asserts à l’aide de matchers tel que « is », « not », « notNullValue », « isEmptyOrNullString »…Vous pouvez également définir vos matchers afin de valider des objets complexes ou règles métiers.

# Les « Rules »

Les rules définissent des comportements à exécuterlors de chaque test. Voici quelques exemples de « Rules »

TemporaryRules: fournis un répertoire temporaire qui sera effacé en fin de test

ErrorCollector: collecte les exceptions sans interrompre le test et liste celles-ci en fin de test uniquement

Timeout: redéfini la valeur d’expiration des tests

ExpectedException: défini quelles exceptions sont attendues lors de l’exécution du test.

# Les « Classifiers »

Les annotationsde méthodes de tests « Classifiers » permettent de classer vos tests selon leur temps présumé d’exécution. Elles vous permettront d’exécuter vos tests selon vos critères de temps.

– @SmallTest < 200ms

– @MediumTest < 1000 ms

– @LargeTest > 1000 ms

De même, dans le cas de tests aux résultats « aléatoire »(dépendance à un système instable ou non-prédictible), vous pourrez ajouter le classifier « FlakyTest »

# Le « UI Testing »

Plusieurs outils vous permettent de tester votre interface utilisateur: Espresso vs UIAutomator.

Nous préconisons les tests avec Expresso, puisque celui-ci vous donne accès aux instances de vos activités, fragments etc… (https://developer.android.com/training/testing/ui-testing/espresso-testing.html)

Pour exemple, vous pourrez définir une classe de test de votre activité avec pour objectif de vérifier le résultat d’un tap sur un bouton.

Vous pourrez également valider simplement que vous lancez la bonne activité pour un intent donné.

TechTalk animé par Olivier Tabone | Co-fondateur Directeur Technique chez Ripple Motion