Apache Maven
Maven Surefire Plugin
Zoeken…
Syntaxis
- mvn-test
- mvn -Dtest = com.example.package.ExampleTest test
Een Java-klasse testen met JUnit en de Maven Surefire-plug-in
De Maven Surefire-plug-in wordt uitgevoerd tijdens de testfase van het Maven-buildproces of wanneer de test
is opgegeven als een Maven-doel. De volgende mapstructuur en minimaal pom.xml
bestand zal Maven configureren om een test uit te voeren.
Directorystructuur in de hoofdmap van het project:
─ project_root
├─ pom.xml
├─ src
│ ├─ main
│ │ └─ java
│ └─ test
│ └─ java
└─ target
└─ ...
inhoud 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>
Maak een bestand met de naam PlusTenTest.java
met de volgende inhoud in de map src/test/java/com/example/app
het project:
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);
}
}
De annotatie @Test
vertelt JUnit dat het moet draaien incrementTest()
als een test tijdens de test
fase van het Maven bouwproces. Maak nu PlusTen.java
in src/main/java/com/example/app
:
package com.example.app;
public class PlusTen {
public static int increment(int value) {
return value;
}
}
Voer de test uit door een opdrachtprompt te openen, naar de hoofdmap van het project te navigeren en de volgende opdracht aan te roepen:
mvn -Dtest=com.example.app.PlusTenTest test
Maven zal het programma compileren en de testmethode incrementTest()
in PlusTenTest
. De test mislukt met de volgende fout:
...
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.
...
De Maven Surefire-plug-in maakt een /target/surefire-reports/
map in de map van uw project met de bestanden com.example.app.PlusTenTest.txt
en TEST-com.example.app.PlusTenTest.xml
die de TEST-com.example.app.PlusTenTest.xml
van het begin bevatten van de output hierboven.
Volg het PlusTen.java
ontwikkelpatroon en wijzig PlusTen.java
zodat de methode increments()
correct werkt:
package com.example.app;
public class PlusTen {
public static int increment(int value) {
return value + 10;
}
}
Roep de opdracht opnieuw op:
mvn -Dtest=com.example.app.PlusTenTest test
De test is geslaagd:
-------------------------------------------------------
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] ------------------------------------------------------------------------
Gefeliciteerd! U hebt een Java-klasse getest met JUnit en de Maven Surefire-plug-in.