mercredi 28 juillet 2010

maven : test unitaire dans différents projets

Supposons que nous avons le projet suivant:

Commons
^
|
|
Core
^
|
|
IHM

Je veux faire des tests unitaires ds IHM et utiliser les classes de base de mes tests unitaires dans Commons.

Sous maven , il est parfois utile d'avoir des tests unitaires du module "Core" ... Cependant ces derniers peuvent avoir à utiliser des classes de tests du module "Commons" dans d'autres projets comme BaseTest ...

Une classe dont toutes les classes de test vont héritées, et qui est responsable de l'initialisation de ressources diverses comme la connexion à la BDD, l'instantiation des beans. Le problème est que maven en version 2.X ne permet pas l'export des classes de tests ...

Voici la recette :

Il faut générer un jar de test, pour cela, ajouter dans Commons :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>

Pour l'utiliser, ajouter la dependance dans le pom.xml du projet IHM
<dependency>
<groupId>monProjet</groupId>
<artifactId>Commons</artifactId>
<version>1-0.SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

Une petite astuce pour ne pas stopper la compilation pendant les tests est d'utiliser

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>

Ou encore
mvn test -Dmaven.test.failure.ignore=true

Une technique différente peut-être de créer un projet séparé de test, et qui ne se déclenche que lors des phase de test d'intégration ...

Un bon article ...

Aucun commentaire:

Enregistrer un commentaire