Intégration de JUnit dans Maven

Cet article est un extrait du livre sur JUnit

Présentation de l’outil

Maven est également très répandu. C’est un outil de compilation puissant intégrant de nombreux plug-ins d’extension et permettant, entre autres, de gérer les dépendances avec une grande facilité. Maven n’est pas un IDE dans le sens ou il laisse le soin au développeur de choisir son éditeur de code préféré. Les projets Maven sont d’ailleurs faciles à importer dans la plupart des IDE. C’est aujourd’hui un standard pour de nombreux projets. Il dédie à JUnit une phase complète lors du processus de compilation. Ainsi, la compilation rapporte une erreur si les tests ne passent pas. Par ailleurs, il suggère fortement l’organisation des fichiers sources suivant un schéma standard :

src
+ main
|  + java
|  |  + com
|  |  |  + monprojet
|  |  |  |  + Classe.java
+ test
|  + java
|  |  + com
|  |  |  + monprojet
|  |  |  |  + ClasseTest.java

Guide pas à pas

Maven est un outil en mode console.

Commencez par ouvrir une console de terminal.

Tapez la commande suivante :

mvn archetype:create -DgroupId=exemple -DartifactId=calculatrice -Dversion=1.0

Maven va créer un dossier calculatrice qui contient un fichier pom.xml.
Éditez ce fichier.

Vous remarquez qu’il est au format XML et qu’il contient la section suivante :

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>3.8.1</version>
    <scope>test</scope>
  </dependency>
</dependencies>

Celle-ci indique que le projet a besoin de JUnit.

Changez simplement le numéro de version pour 4.7.

Ajoutez également la section suivante pour indiquer que nous souhaitons compiler en Java 1.5 :

<build>
  <finalName>Calculatrice</finalName>
  <plugins>
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
  </plugins>
</build>

Créez le répertoire src/main/java/math.

Sauvegardez-y le fichier Addition.java.

package math;

class Addition {
    public Long calculer(Long a, Long b) {
        return a+b;
    }
    public Character lireSymbole() {
        return '-';
    }
}

Créez le répertoire src/test/java/math.

Sauvegardez-y le fichier AdditionTest.java.

package math;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

public class AdditionTest {
    protected Addition op;

    @Before
    public void setUp() {
        op = new Addition();
    }

    @After
    public void tearDown() {
    }

    @Test
    public void testCalculer() throws Exception {
        assertEquals(new Long(4), op.calculer(new Long(1),
                                              new
Long(3)));
    }

    @Test
    public void testLireSymbole() throws Exception {
        assertEquals((Character)'+', op.lireSymbole());
    }
}

Enfin, lancez la commande suivante :

# mvn test
-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running math.AdditionTest
Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 
0.03 sec <<< FAILURE!

Results :

Failed tests: 
  testLireSymbole(math.AdditionTest)

Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

Comme vous pouvez le constater, Maven produit un rapport de tests en mode textuel avec la synthèse du nombre de tests et la liste des tests en échec. Par défaut Maven produit les rapports détaillés dans le dossier target/surefire-reports.

Cet article est un extrait du livre sur JUnit

2 thoughts on “Intégration de JUnit dans Maven

    • Salut,
      Tu as raison, cela mérite une mise à jour!
      Ceci dit, au moment de l’écriture du livre, JUnit 3 était encore utilisé pour le code legacy et pour sa compatibilité avec certaines bibliothèques. En tout état de cause il s’inscrit dans les racines des xUnit et j’en trouve l’étude intéressante même si je reconnais qu’il vaut mieux passer au 4 pour tout nouveau projet!
      #++

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>