Testen in Maven

Ein weiterer wichtiger Punkt in der Arbeit von Maven ist die Testphase. Es wird ausgeführt, wenn Sie „test“ , „ package“ , „verify “ oder eine andere Phase ausführen, die darauf folgt.

Standardmäßig führt Maven alle Tests aus, die sich im Ordner src/test/java/ befinden . Um auszuführende Tests von anderen Java-Dateien zu unterscheiden, wurde eine Namenskonvention übernommen. Tests sind Java-Klassen, deren Namen mit „Test“ beginnen und mit „Test“ oder „TestCase“ enden .

Allgemeines Muster der Testnamen:

  • **/Test*.java
  • **/*Test.java
  • **/*TestCase.java

Diese Tests müssen auf Basis des Junit- oder TestNG-Testframeworks geschrieben werden. Das sind sehr coole Frameworks, wir werden auf jeden Fall etwas später darüber sprechen.

Testergebnisse in Form von Berichten in den Formaten .txt und .xml werden im Verzeichnis ${basedir}/target/surefire-reports gespeichert.

Versuchsaufbau

Normalerweise gibt es viele Optionen zum Ausführen von Tests, daher haben die Maven-Entwickler ein spezielles Plugin erstellt, in dessen Parametern Sie alle detaillierten Informationen zum Testen festlegen können. Das Plugin heißt Maven Surefire Plugin und ist unter verfügbar .

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
    	<version>2.12.4</version>
    	<configuration>
        	<includes>
                <include>Sample.java</include>
        	</includes>
    	</configuration>
	</plugin>
</plugins>

Im Beispiel haben wir dem Plugin mitgeteilt, dass es eine einzelne Testklasse ausführen muss, Sample.java.

So beseitigen Sie fehlerhafte Tests schnell

Um das Projekt zum Testen auszuführen, müssen Sie den Befehl mvn test ausführen. Aber häufiger besteht die Notwendigkeit, einige Tests von der Prüfung auszuschließen. Sie können beispielsweise defekt sein, zu lange zum Laufen brauchen oder aus einem anderen Grund.

Erstens können Sie Maven einfach anweisen, die Tests in der Build-Phase zu überspringen. Beispiel:

mvn clean package -Dmaven.test.skip=true

Zweitens können Sie in der Plugin-Konfiguration die Ausführung von Tests deaktivieren:


<configuration>
    <skipTests>true</skipTests>
</configuration>

Und drittens können Tests mit dem Tag <exclude> ausgeschlossen werden . Beispiel:


<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
    	<version>2.12.4</version>
    	<configuration>
        	<excludes>
           	<exclude>**/TestFirst.java</exclude>
	           <exclude>**/TestSecond.java</exclude>
    	</excludes>
    	</configuration>
    </plugin>
</plugins>