Écrire du code de qualité est un défi constant pour les développeurs.
Sans tests adéquats, le code peut contenir des bugs qui nuisent à la fonctionnalité et à la maintenance.
Le développement piloté par les tests offre une approche structurée pour garantir que votre code répond aux attentes dès le départ.
Développez des applications Android solides, fiables et efficaces avec une approche TDD
Le développement piloté par les tests (TDD – Test Driven Development) est une méthode de programmation qui consiste à rédiger des tests avant de créer le code fonctionnel.
Principes du Développement Piloté par les Tests
Le TDD est une méthode de développement où les tests sont écrits avant le code fonctionnel. L’idée principale est de guider le développement par les tests que vous souhaitez passer. Voici les étapes fondamentales du TDD :
- Écrire un Test :Avant d’écrire le code, rédigez un test qui échouera initialement car la fonctionnalité n’existe pas encore.
- Faire Passer le Test :Développez le code nécessaire pour que le test passe.
- Refactorer le Code :Améliorez le code en préservant la fonctionnalité tout en veillant à ce que les tests restent verts.
- Répéter :Répétez ces étapes pour chaque nouvelle fonctionnalité.
La figure suivante présente les étapes clés du développement piloté par les tests (TDD) :
Avantages et Inconvénients du TDD
Avant de poursuivre, examinons de plus près les avantages et les inconvénients du TDD pour mieux comprendre ses implications sur le développement d’une application.
Avantages | Inconvénients |
---|---|
Code Propre et Fonctionnel : Le TDD pousse à écrire du code plus propre et structuré, car les tests définissent les attentes. | Conception Simple Requise : Le code doit être conçu pour être facilement testable, ce qui peut restreindre la complexité des solutions. |
Tests Automatisés : Les tests peuvent être automatisés et exécutés régulièrement pour garantir la stabilité du code. | Investissement en Temps : Créer les tests avant le développement peut ralentir le processus au début. |
TDD avec Android Studio et JUnit
Organisation du Projet
Dans Android Studio, un projet est généralement structuré en plusieurs répertoires :
- src/main/java :Contient le code source principal de l’application.
- src/test/java :Contient les tests unitaires non instrumentés.
- src/androidTest/java :Contient les tests instrumentés qui nécessitent une plateforme Android.
Cette figure présente la structure d’organisation d’un projet dans Android Studio.
Exemple Pratique de TDD
Création d’un Projet de Base
Supposons que vous avez créé un projet Android de base avec une activité vide. Nous allons ajouter des tests pour une classe Plage.
Ajouter un Test Unitaire
Créez une nouvelle classe de test dans src/test/java : ( class PlageTest )
Ce code utilise JUnit pour tester la création d’un objet Plage. Nous avons une classe de test appelée PlageTest avec une méthode creationPlage() marquée par l’annotation @Test , qui indique qu’il s’agit d’un test unitaire. Dans cette méthode, on crée une instance de la classe Plage avec un nom (« Palmyre ») et un identifiant (1). Ensuite, on utilise des assertions assertEquals pour vérifier que les attributs nom et id de l’objet plage correspondent aux valeurs attendues. Si les valeurs sont correctes, le test passe, sinon il échoue, signalant un problème dans la classe Plage .
import org.junit.Test
import kotlin.test.assertEquals
class PlageTest {
@Test
fun creationPlage() {
val plage = Plage("Palmyre", 1)
assertEquals("Palmyre", plage.nom)
assertEquals(1, plage.id)
}}
Dans cet exemple, nous testons la création d’une Plage avec un nom et un ID.
Cette image montre une exécution réussie de tests unitaires dans Android Studio
Développer la Classe Plage
Basé sur le test ci-dessus, développons la classe Plage :
data class Plage(val nom : String, val id : Int)
Nous utilisons une data class pour bénéficier des méthodes toString, equals, hashCode et copy.
Exécution des Tests
- Ouvrez le fichier de test dans Android Studio.
- Cliquez avec le bouton droit sur le fichier et sélectionnez « Run ‘ExampleUnitTest' ».
La figure montre un menu contextuel dans Android Studio, focalisé sur les options pour exécuter et déboguer un test unitaire nommé ExampleUnitTest . Voici les détails des options centrées sur l’exécution des tests :
Run ‘ExampleUnitTest’ : Cette option permet de lancer directement le test unitaire nommé « ExampleUnitTest ». Le raccourci clavier pour cette action est Ctrl+Maj+F10. Elle exécute le test de manière standard, sans outils de débogage ou d’analyse de couverture de code.
Vous verrez les résultats des tests dans la fenêtre de test en bas d’Android Studio. Les tests réussis sont marqués en vert, et les échecs en rouge.
Ajout de Nouveaux Tests
Ajoutez un test supplémentaire pour vérifier le comportement de la Plage :
@Test
fun plageNomDoitEtreNonVide() {
val plage = Plage("", 2)
assertEquals("", plage.nom)
assertEquals(2, plage.id)
}
La fonction plageNomDoitEtreNonVide() teste un cas où un objet de la classe Plage est créé avec un nom vide (« ») et un identifiant (id) de 2. Le test vérifie deux choses à l’aide de la fonction assertEquals
Refactoring et Organisation des Tests Unitaires
Après avoir écrit plusieurs tests et classes, vous devrez peut-être réorganiser votre code. Par exemple, déplacez la classe Plage dans un package model :
Déplacement de la Classe
Déplacez la classe Plage de src/main/java à src/main/java/model. Vous pouvez le faire en utilisant les fonctionnalités de refactoring d’Android Studio.
La figure montre la structure du projet dans Android Studio, en particulier l’organisation des dossiers sous le répertoire app . Voici ce que la figure présente en détail :
Mise à Jour des Tests
Déplacez également les tests associés dans un répertoire correspondant pour garder votre code bien organisé.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Qu'est-ce que le développement piloté par les tests (TDD) ?
Quels sont les avantages du TDD ?
Quels sont les inconvénients du TDD ?
Comment mettre en œuvre le TDD avec Android Studio ?
Comment organiser un projet Android pour le TDD ?
Conclusion
Le développement piloté par les tests peut transformer votre approche du développement logiciel, en garantissant un code de haute qualité. Quelle méthode de test utilisez-vous pour améliorer vos projets de développement ?