2013-12-19 3 views
11

Ich benutze Maven, um mein Projekt zu erstellen. Ich derzeit Tests in verschiedene Hierarchien aufgeteilt:Verwenden des Maven-Surefire-Plugins zum Einbinden von Tests

  • Unit-Tests ->src/test/java/**/*Test.java
  • Integrationstests ->src/test-integration/java/**/*Test.java
  • Externe Tests ->src/test-external/java/**/*Test.java

Hier ist mein maven-surefire-plugin Abschnitt:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${maven-surefire-plugin.version}</version> 
    <configuration> 
     <includes> 
      <include>src/test/java/**/*Test.java</include> 
     </includes> 
    </configuration> 
</plugin> 

Die <include> Direktive funktioniert nicht. Keine Tests werden ausgeführt, wenn ich renne: mvn clean test

Ich versuchte **/*Test.java und es führt alle Tests - Einheit, Integration und externe. Für die Standardtestsuite möchte ich jedoch nur die Komponententests ausführen.

Wie kann ich das in Maven machen?

Ref:

<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.14.1</version> 

Antwort

1

Wäre es leichter, einen Ausschluss zu verwenden, anstatt die Aufnahme?

<excludes> 
    <exclude>test-integration/**/*</exclude> 
    <exclude>test-external/**/*</exclude> 
</excludes> 

Oder so etwas?

8

Sie sollten Ihre Unit- und Integrationstestfälle trennen. Komponententests können mit dem Surefire-Plugin ausgeführt werden, und es gibt ein separates Plugin namens Failsafe zum Ausführen von Integrationstests.

Das Surefire-Plugin führt standardmäßig alle Testdateien aus, deren Name mit *Test.java endet. Der Trick besteht darin, Ihre Integrationstestdateien mit einem anderen Namen zu benennen, z. B. *IT.java. Das Failsafe-Plugin identifiziert sie als Integrationstests.

Sie können eine Probe Verwendung in dieser Antwort finden - How do I get my Maven Integration tests to run

Auch müssen Sie nicht separat müssen todsichere Plugin konfigurieren, wenn Sie die Standardeinstellungen, wie wenn man die Testfallakten in src/test/java Ordner und benennen Sie Ihre Testdateien als *Test.java folgen .

5

Dies ist, weil <include> Pfad relativ zu <testSourceDirectory> ist, die standardmäßig auf ${project.build.testSourceDirectory} = src/test/java. Versuchen Sie dies

<include>**/*Test.java</include> 
+0

Dies sollte die akzeptierte Antwort sein – Andrejs