Apache Maven
Plugin Surefire Maven
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.