Recherche…


Syntaxe

  • test mvn
  • mvn -Dest = test com.example.package.ExampleTest

Test d'une classe Java avec JUnit et le plugin Maven Surefire

Le plug-in Maven Surefire s'exécute pendant la phase de test du processus de génération Maven ou lorsque le test est spécifié comme objectif Maven. La structure de répertoires suivante et le fichier pom.xml minimum configurent Maven pour exécuter un test.

Structure du répertoire dans le répertoire racine du projet:

─ project_root 
  ├─ pom.xml
  ├─ src
  │  ├─ main
  │  │  └─ java
  │  └─ test
  │     └─ java
  └─ target
     └─ ...

pom.xml :

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>company-app</artifactId>
  <version>0.0.1</version>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

Créez un fichier appelé PlusTenTest.java avec le contenu suivant dans le répertoire src/test/java/com/example/app :

package com.example.app;

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class PlusTenTest {
    
    @Test
    public void incrementTest() {
        int result = PlusTen.increment(10);
        assertEquals("PlusTen.increment(10) result", 20, result);
    }
}

L'annotation @Test indique à JUnit qu'elle doit exécuter incrementTest() comme test pendant la phase de test du processus de construction de Maven. Maintenant, créez PlusTen.java dans src/main/java/com/example/app :

package com.example.app;

public class PlusTen {
    public static int increment(int value) {
        return value;
    }
}

Exécutez le test en ouvrant une invite de commande, en accédant au répertoire racine du projet et en appelant la commande suivante:

mvn -Dtest=com.example.app.PlusTenTest test

Maven compilera le programme et exécutera la méthode de test incrementTest() dans PlusTenTest . Le test échouera avec l'erreur suivante:

...
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec <<< FAILURE! - in com.example.app.PlusTenTest
incrementTest(com.example.app.PlusTenTest)  Time elapsed: 0.004 sec  <<< FAILURE!
java.lang.AssertionError: PlusTen.increment(10) result expected:<20> but was:<10>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:555)
at com.example.app.PlusTenTest.incrementTest(PlusTenTest.java:12)


Results :

Failed tests:   
  PlusTenTest.incrementTest:12 PlusTen.increment(10) result expected:<20> but was:<10>

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

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.749 s
[INFO] Finished at: 2016-09-02T20:50:42-05:00
[INFO] Final Memory: 14M/209M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project app: There are test failures.
...

Le plug-in Maven Surefire crée un /target/surefire-reports/ dans le répertoire de votre projet contenant les fichiers com.example.app.PlusTenTest.txt et TEST-com.example.app.PlusTenTest.xml contenant les détails d'erreur du début. de la sortie ci-dessus.

En suivant le modèle de développement piloté par les tests, modifiez PlusTen.java pour que la méthode increments() fonctionne correctement:

package com.example.app;

public class PlusTen {
    public static int increment(int value) {
        return value + 10;
    }
}

Invoquer à nouveau la commande:

mvn -Dtest=com.example.app.PlusTenTest test

Le test réussit:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.example.app.PlusTenTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 sec

Results :

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

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.753 s
[INFO] Finished at: 2016-09-02T20:55:42-05:00
[INFO] Final Memory: 17M/322M
[INFO] ------------------------------------------------------------------------

Toutes nos félicitations! Vous avez testé une classe Java à l'aide de JUnit et du plug-in Maven Surefire.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow