Aller au contenu

Traduc de tuto : Les tests unitaires


Recommended Posts

J'ai eu comme l'impression qu'ici, les tests unitaires, c'était un peu une légende, les vieux racontent aux enfants que ça existe pour leur faire peur la nuit. Du coup comme j'ai quand même passé pas mal de temps à n'y rien comprendre et que j'ai fini par en faire quelque chose (toujours pas sur les alert dialog, si quelqu'un à la solution, n'oubliez pas mon autre sujet :D ), du coup je vous propose une petite traduction du tuto officiel de base. C'est sans prétention, je suis pas une traductrice, ni une rédactrice de tuto ni rien du tout, c'est à prendre ou à passer.

Hello, Testing

Android offre un puissant mais simple framework pour tester les applications. Simple… Oui mais pas toujours. Le peu de documentation à ce sujet peut rendre l’initiation un peu compliquée. Nous vous proposons donc cette traduction du tutoriel basique proposé par les développeurs, disponible à l’adresse : http://developer.android.com/resources/tutorials/testing/helloandroid_test.html.

Ce tutorial va vous introduire les bases des tests unitaires et vous aider à démarrer rapidement. Avant de le commencer, vous devez avoir suivi un précédent, Hello World (http://developer.android.com/resources/tutorials/hello-world.html) en somme avoir une application toute simple. Il va vous expliquer comment initier les tests, les construire et les faire marcher sur l’application.

Prérequis

Ce tutorial et son code découle du tutorial Hello World. Si vous ne l’avez pas déjà suivi, vous devez le suivre. Vous devez utiliser éclipse et les outils pour la programmation Android et avoir une plateforme SDK de version 1.5 (API niveau 3) ou supérieure.

Créer le projet de test

Dans le tutorial Hello World, vous avez créé une application appelée HelloAndroid. Le test d’une application Android est aussi une application Android, et vous allez le créer via un projet Eclipse.

Pour créer le projet de test, suivez les étapes suivantes :

1. Dans Eclipse, sélectionnez New > Project > Android > Android Test Project.

hwtest_new_test_project_menu.png

La boite de dialogue New avec comme choix Android Test Project apparait.

2. Remplissez les champs avec les valeurs suivantes :

o Test Project Name: "HelloAndroidTest"

o Test Target: Selectionnez "An existing Android project", cliquez sur Browse, et selectionnez "HelloAndroid" dans la liste de projets.

o Build Target: Choissisez Android 1.5 ou au-dessus.

o Application name: "HelloAndroidTest"

o Package name: "com.example.helloandroid.test"

La boite de dialogue doit alors ressembler à ceci :

hwtest_new_test_project_dialog_complete_callouts.png

3. Cliquez sur Finish. Le nouveau projet apparait dans le Package Explorer.

Créer les classes de test

Vous avez maintenant un projet de test appelé HelloAndroidTest, et la structure basique d’une application de test, appelée aussi HelloAndroidTest. Cette structure inclus tous les fichiers et répertoires dont vous avez besoin pour écrire et faire tourner l’application de test, excepté pour les classes que contient votre test (les « test case class »).

L’étape suivante est de définir la test case class. Dans ce tutoriel, vous allez définir une test case class qui hérite (extends) d’une d’Android créer pour les Activity. Cette classe contient les définitions de quatre méthodes :

1. HelloAndroidTest: Elle définit le constructeur de la classe. Elle est obligatoire pour faire marcher le framework.

2. setUp(): Elle redéfinit la méthode setUp() de la super classe JUnit. Vous l’utilisez pour initialiser l’environnement avant chaque lancement de test.

3. testPreconditions(): Elle définit un petit test pour s’assurer que l’application a démarré correctement.

4. testText(): Véritable test, elle implémente les mécanismes à tester. Lors du lancement, son code s’exécute dans l’émulateur comme une méthode classique. Elle contient le code pour le test et les éventuelles méthodes à appeler pour le faire.

Ajouter la test case class au projet

Pour ajouter le fichier Java de test au projet, suivez les étapes suivantes :

1. Dans Eclipse, ouvrez le projet HelloAndroidTest project si ce n’est pas déjà fait.

2. Ouvrez l’onglet « src ». Un package vide du nom de com.helloandroid.test doit être présent. Click droit dessus et sélectionnez New > Class:

hwtest_create_test_class_menu_callouts.png

La boite de dialogue New Java Class dialog s’affiche.

3. Dans la boite de dialogue, remplissez les champs comme voici :

o Name: "HelloAndroidTest". Ce sera le nom de votre classe de test.

o Superclass: "android.test.ActivityInstrumentationTestCase2". La superclasse dont va hériter votre classe de test, paramétré avec l’Activity à tester.

La boite doit alors ressembler à ça :

hwtest_new_test_class_dialog_complete_callouts.png

4. Ne changez rien de plus, cliquez sur Finish.

5. Vous avez maintenant le nouveau fichier, HelloAndroidTest.java dans le projet.

6. Ouvrez HelloAndroidTest.java. Il doit ressembler à ça :

package com.exemple.helloandroid.test;

import android.test.ActivityInstrumentationTestCase2;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 {
}

7. La classe décrite dans le fichier dépend de la classe HelloAndroid qui n’est pas encore importée. Pour le faire ajoutez le lien suivant juste avant les importations déjà implémentées.

import com.helloandroid.HelloAndroid;

Ajouter le constructeur de la test case.

Le constructeur est utilisé par le framework quand vous lancez un test. Il appelle le super constructeur avec comme paramètres les informations sur l’application à tester.

Ajoutez le constructeur ci-dessous juste après la définition de la classe :

    public HelloAndroidTest() {
     super("com.exemple.helloandroid", HelloAndroid.class);
   }

Sauvegardez votre fichier HelloAndroidTest.java.

Ajouter une setup method

La méthode setUp() redéfinit celle de JUnit, que le framework appelle en priorité pour chaque méthode de test. Vous devez l’utiliser pour initialiser vos variables et préparer l’environnement de test. Dans cet exemple, setUp() démarre l’application Hello, Android, récupère le texte affiché à l’écran et récupère la chaine de caractères originale depuis le fichier string.xml.

En premier, ajouter ce code juste après le constructeur :

    @Override
   protected void setUp() throws Exception {
       super.setUp();
       mActivity = this.getActivity();
       mView = (TextView) mActivity.findViewById(com.exemple.helloandroid.R.id.textview);
       resourceString = mActivity.getString(com.exemple.helloandroid.R.string.hello);
   }

Puis, pour que ce code marche, vous devez également ajouter les variables auquel il fait appel et les bibliothèques qu’il utilise. Pour les variables, ajoutez entre la définition de la classe et le constructeur le code qui suit :

    private HelloAndroid mActivity;
   private TextView mView;
   private String resourceString;

Pour la bibliothèque, ajoutez son importation juste après celle de android.test.ActivityInstrumentationTestCase2 :

  import android.widget.TextView;

Ajouter des pré-conditions :

Un test de pré-condition vérifie les conditions initiales de lancement de l’application avant d’exécuter les autres tests. Il est similaire à setUp() mais n’est lancé qu’une seule fois (et non avant chaque test).

Ici, nous avons seulement besoin de vérifier si l’application elle-même c’est correctement initialisée et si l’objet TextView existe. Pour ce faire, appelez la méthode héritée assertNotNull() en lui donnant la référence vers le TextView. Le test sera concluant si la référence n’est pas nulle.

    public void testPreconditions() {
     assertNotNull(mView);
   }

Ajouter un test unitaire

Maintenant, ajouté un test unitaire simple au reste de la classe de test case. La méthode testText() va appeler à nouveau une méthode héritée, assertEquals() pour vérifier si le texte qui s’affiche à l’écran est bien celui escompté. Vous allez donc comparer le texte contenu dans le TextView, et celui contenu dans la variable référençant le fichier string.xml. Le test sera concluant si elles sont égales.

Pour ajouter ce test, ajoutez le code suivant juste après la méthode testPrecondition() :

    public void testText() {
     assertEquals(resourceString,(String)mView.getText());
   }

La classe de test terminée :

Vous avez terminé d’écrire la classe de test. Voici ce à quoi elle doit ressembler :

package com.helloandroid.test;

import com.example.helloandroid.HelloAndroid;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.TextView;

public class HelloAndroidTest extends ActivityInstrumentationTestCase2 {
   private HelloAndroid mActivity;  // the activity under test
   private TextView mView;          // the activity's TextView (the only view)
   private String resourceString;

   public HelloAndroidTest() {
     super("com.example.helloandroid", HelloAndroid.class);
   }
   @Override
   protected void setUp() throws Exception {
       super.setUp();
       mActivity = this.getActivity();
       mView = (TextView) mActivity.findViewById(com.exemple.helloandroid.R.id.textview);
       resourceString = mActivity.getString(com.exemple.helloandroid.R.string.hello);
   }
   public void testPreconditions() {
     assertNotNull(mView);
   }
   public void testText() {
     assertEquals(resourceString,(String)mView.getText());
   }
}

Lancer les tests et voir le résultat

Vous pouvez maintenant lancer les tests que vous avez créé pour l’application HelloAndroid. Pour les lancer comme des Android JUnit test, dans le Package Explorer, clic-droit sur le projet HelloAndroidTest et sélectionnez : Run As > Android JUnit Test

hwtest_runas_menu_callouts.png

Les tests vont alors se lancer dans l’émulateur. Un nouvel onglet va s’afficher automatiquement à côté du Package Explorer, l’onglet JUnit, qui vous exposera le résultat des tests.

hwtest_junit_success.png

• "Finished after x seconds": Combien de temps a duré l’exécution du test.

• "Runs": Le nombre de test executes.

• "Errors:": Le nombre d’erreur et exception rencontrées durant l’exécution du test.

• "Failures:": Le nombre d’échecs rencontrés durant l’exécution du test.

• A progress bar. Barre de progression pour indiquer ou en sont les tests. S’ils réussissent elle est verte, sinon elle est rouge.

Lien vers le commentaire
Partager sur d’autres sites

  • 8 months later...

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...