Contenu du cours
Bibliothèque Java JUnit. Types de Tests
Bibliothèque Java JUnit. Types de Tests
Tests d'Intégration
Dans le chapitre précédent, nous avons discuté des tests unitaires, où nous avons testé des modules individuels. Cependant, le programme peut ne pas fonctionner correctement si nous avons seulement testé des modules individuels de manière isolée. Les modules interagissent constamment entre eux; un module est utilisé dans un autre, le second dans le troisième, et ainsi de suite. Ces interactions entre les modules doivent également être testées, et ce niveau de test est appelé test d'intégration.
Par exemple, nous avons une classe Engine
avec ses champs et méthodes, ainsi qu'une classe Car
dans laquelle une instance de la classe moteur est créée en utilisant la composition. En d'autres termes, les méthodes de la classe voiture impliquent un objet de la classe moteur. Une intégration se produit, ce qui signifie que nous devons tester si cette intégration est effectuée correctement.
Engine
Car
public class Engine { private boolean running; public void start() { running = true; } public void stop() { running = false; } public boolean isRunning() { return running; } }
Comme vous pouvez le voir, nous avons 2 classes ( vous pouvez basculer entre les fichiers ci-dessus ), chacune avec ses propres méthodes. Dans la classe Car
, vous pouvez voir une instance de la classe Engine
être créée. Cela s'appelle la composition. À l'intérieur des méthodes de la classe Car
, nous utilisons les méthodes de la classe Engine
, ce qui signifie que si quelque chose ne va pas dans la classe Engine
, les méthodes de la classe Car
casseront également. Voici donc l'algorithme de ce que nous devons faire :
- Tout d'abord, nous devons tester toutes les méthodes de la classe
Engine
isolément ; - Ensuite, nous devons tester les méthodes de la classe
Car
; - Ce test sera un test d'intégration puisque les méthodes de la classe
Car
utilisent les méthodes de la classeEngine
; - Si le test d'intégration est réussi, nous effectuons un test unitaire de la classe
Car
. (un tel test peut ne pas être nécessaire du tout si la classeCar
n'a pas de méthodes qui n'utilisent pas une instance de la classeEngine
.)
Dans notre exemple, nous n'aurons besoin que de tests d'intégration pour éviter de vous submerger avec des étapes inutiles. L'objectif de ce chapitre est de démontrer les tests d'intégration.
J'ai mis en évidence les blocs de code pour vous où les tests sont effectués avec des commentaires. Comme vous pouvez le voir, le test lui-même est simple et direct. Il n'y a rien de complexe dans un tel test, et cela montre que différents modules interagissent correctement les uns avec les autres.
Une démonstration d'un exemple exécutable :
main
package com.example; public class Main { public static void main(String[] args) { Car car = new Car(); // Testing engine start car.startEngine(); if (car.isEngineRunning()) { System.out.println("Engine start test passed successfully."); } else { System.out.println("Engine start test failed."); } // Testing engine stop car.stopEngine(); if (!car.isEngineRunning()) { System.out.println("Engine stop test passed successfully."); } else { System.out.println("Engine stop test failed."); } } } class Engine { private boolean running; public void start() { running = true; } public void stop() { running = false; } public boolean isRunning() { return running; } } class Car { private Engine engine; public Car() { this.engine = new Engine(); } public void startEngine() { engine.start(); } public void stopEngine() { engine.stop(); } public boolean isEngineRunning() { return engine.isRunning(); } }
Ainsi, nous avons effectué un test d'intégration de base, démontrant que ces méthodes fonctionnent correctement ensemble. Les tests d'intégration ont été réussis, et les méthodes ont été testées avec succès. Super ! Nous approfondirons les tests d'intégration dans la troisième section de ce cours.
Merci pour vos commentaires !