Les tests unitaires sous Struts 2
Introduction
Afin d’améliorer la qualité de votre code, il est important de mettre en place des tests unitaires.
Un test unitaire a pour objectif de tester une fonctionnalité et de vérifier si elle se comporte comme attendu, si nous obtenons bien le résultat attendu en sortie par rapport aux données en entrée.
L’intérêt, une fois un lot de tests unitaires mis en place sur le code, est que, lorsque nous développons une nouvelle version logicielle, il est facile et rapide de repasser tous les tests et de nous assurer qu’aucune régression dans le code n’a été introduite par les nouveaux développements. Suivant la complexité et la criticité d’un projet, nous pouvons choisir le degré de couverture du code par des tests unitaires.
JUnit
1. Introduction
JUnit est un framework open source spécifique au développement de tests unitaires et à leur exécution.
2. Ajouter le plug-in JUnit
Struts 2 dispose du plug-in junit qui permet de tester les classes de type action. Dans notre projet Maven Java Struts devispro, nous allons ajouter le plug-in struts2-junit-plugin.
Pour cela, ouvrez le fichier Maven pom.xml et ajoutez la dépendance ci-dessous :
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-junit-plugin</artifactId>
<version>2.5.22</version>
<scope>test</scope>
</dependency>
Faites un clic droit sur le projet devispro, cliquez sur Maven, puis sur Update Project et sur OK afin d’être certain que les jars soient bien ajoutés au projet.
Maintenant, si vous allez sous MavenDependencies dans le projet devispro, vous pouvez vérifier que le jar struts2-junit-plugin-2.5.22.jar a bien été importé.
Méthodologie
1. Principes des tests unitaires avec JUnit
JUnit est le framework de tests unitaires le plus utilisé en Java.
a. Répertoire de tests pour JUnit
Les tests JUnit doivent être regroupés dans des classes de test sous src/java/test. Il faut nommer la classe de test en fonction du nom de la classe testée et la préfixer ou suffixer par Test en la plaçant dans le même package.
Par exemple, pour tester la classe AccountAction.java, créez une classe Test AccountAction ou AccountActionTest.
La classe de test TestAccountAction ou AccountActionTest hérite de StrutsTestCase.
b. Méthode de test
Une classe de test est une classe qui déclare une ou des méthodes publiques sans paramètre et sans valeur de retour, elle présente l’annotation @Test, voici un exemple :
@Test
public void upperCase() throws Exception {
// Bloc arrange
String message = "bienvenue";
// Bloc act => méthode à tester
String majuscule = message.toUpperCase();
// Bloc assertion
assertEquals("BIENVENUE", majuscule);
}
c. Les assertions
Les méthodes de type assertion permettent de vérifier la valeur d’un paramètre ou de comparer deux valeurs passées en paramètres. Si l’assertion est fausse, une exception de type AssertionError est retournée et le test est en échec.
Voici un tableau listant les différentes méthodes d’assertion proposées par JUnit :
Méthode |
Utilisation |
assertTrue(boolean condition) |
Vérifie que la condition passée en paramètre est vraie. |
assertFalse(boolean condition)... |