Dans le développement de logiciels, les tests unitaires sont un processus qui isole et teste des sections dédiées d'une application. Les unités sont le terme formel pour ces sections dédiées. Dans votre application Java, une unité est une méthode.
Il existe de nombreux frameworks de tests unitaires disponibles pour les développeurs Java. Parmi les meilleurs frameworks se trouve JUnit 5.
Pourquoi les tests unitaires sont-ils importants ?
Si vous avez déjà écrit des instructions de débogage pour imprimer et vérifier la valeur d'une variable, félicitations; vous avez créé un test unitaire. Cette section de code jetable était nécessaire car vous ne receviez pas la sortie souhaitée.
Mais que se passe-t-il si vous recevez la sortie souhaitée et que le code contient toujours une erreur quelque part? Vous pourriez déployer l'application et ce bogue pourrait entraîner une faille de sécurité plus tard. Pour les applications qui stockent les données des utilisateurs, les enjeux sont importants en cas de faille de sécurité.
Les tests unitaires ciblent chaque section de votre application, qu'elle soit à l'origine d'une erreur ou non. Par conséquent, les tests unitaires jouent un rôle important dans bonne sécurité logicielle.
Qu'est-ce que JUnit 5 ?
JUnit 5 est plus qu'un simple framework de tests unitaires. Il comporte plusieurs sous-projets, à savoir la plate-forme JUnit, le JUnit Jupiter et le JUnit Vintage. Chacun de ces trois composants possède des modules uniques qui fonctionnent ensemble pour améliorer les tests pour les programmeurs Java.
La plate-forme JUnit 5 est disponible dans les dernières versions des meilleures plates-formes de développement intégrées Java (IDE). Les IDE Java qui prennent en charge JUnit 5 sont :
- IDÉE IntelliJ
- Éclipse
- NetBeans
- Code Visual Studio
Création de tests unitaires avec JUnit 5
Cet exemple de programme utilise JUnit 5 pour créer plusieurs tests unitaires sur une simple application de calculatrice.
La classe Calculatrice
forfait application ;
PubliqueclasserCalculatrice{
Publiquestatiqueentierajouter(entier num1, entier num2){
revenir num1 + num2 ;
}Publiquestatiqueentiersoustraire(entier num1, entier num2){
revenir num1 - num2 ;
}Publiquestatiqueentiermultiplier(entier num1, entier num2){
revenir num1 * num2 ;
}
Publiquestatiqueentierdiviser(entier num1, entier num2){
revenir num1 / num2 ;
}
}
La Classe Java ci-dessus effectue quatre opérations statiques: addition, soustraction, multiplication et division. Chaque méthode prend deux arguments entiers et renvoie une seule valeur entière.
La classe de test JUnit 5
forfait test;
importerstatique org.junit. Affirmer.*;
importer application. Calculatrice;
importerorg.junit.Test;PubliqueclasserCalculatriceTest{
@Test
PubliqueannulertestAjouter(){
assertEquals(7, Calculatrice.ajouter(3, 4));
}@Test
PubliqueannulertestSoustraire(){
assertEquals(6, Calculatrice.soustraire(9, 3));
}@Test
PubliqueannulertestMultiplier(){
assertEquals(10, Calculatrice.multiplier(5, 2));
}
@Test
PubliqueannulertestDiviser(){
assertEquals(2, Calculatrice.diviser(4, 2));
}
}
CalculatriceTest introduit deux notions importantes: la @Test l'annotation et la assertEquals() méthode. L'annotation @Test indique que la méthode directement en dessous est une méthode de test. Dans la classe de test ci-dessus, il existe quatre méthodes de test, une pour chacune des opérations de la calculatrice.
Toutes les méthodes de test utilisent la méthode assertEquals(). Cette méthode prend deux arguments obligatoires et un troisième argument facultatif. Le premier argument donné à la méthode assertEquals() ci-dessus est le résultat attendu, et le second argument est la méthode (ou l'unité) que vous souhaitez évaluer.
La classe CalculatorTest n'a pas de méthode principale, mais les annotations JUnit @Test rendent chacune des méthodes de test exécutables. L'exécution de la classe CalculatorTest dans eclipse produit l'interface suivante :
Comme vous pouvez le voir, chaque test est réussi. Il y a quatre tests, et ils se sont tous déroulés sans erreurs ni échecs.
Les tests unitaires d'apprentissage peuvent élargir vos opportunités de carrière
En tant que développeur, savoir tester un logiciel est une compétence avantageuse à posséder. Cela améliorera certainement votre flux de travail et, espérons-le, rendra votre code plus facile à utiliser pour les autres. Cependant, il existe une branche du développement logiciel qui se concentre uniquement sur les tests. Ces ingénieurs sont appelés testeurs de logiciels.