Es gibt keine bestimmte Phase im Maven-Lebenszyklus das entspricht Vor- und Nachtest. Dies liegt daran, dass Komponententests keine externe Umgebung erfordern sollen. Es hört sich so an, als ob Sie keine Komponententests, sondern Integrationstests durchführen möchten, da dafür eine Umgebung eingerichtet werden muss.
Aus den Dokumenten :
Und es gibt einen pre-integration-test
, integration-test
und post-integration-test
die verwendet werden, um die Testumgebung einzurichten, auszuführen und zu zerstören.
Daher wäre es einfacher und viel sauberer, dies in integration-test
zu tun Phase mit dem maven-failsafe-plugin
.
Wenn Sie das jetzt wirklich als Unit-Tests ausführen möchten, würde ich das Erstellen / Löschen der Datenbank nicht als Maven-Plugin schreiben. Es wäre viel besser, Ihre Anwendung die Testdatenbank erstellen zu lassen, wenn sie in einer Testumgebung konfiguriert ist. (Wenn Sie beispielsweise Spring verwenden, bietet es dafür viele Möglichkeiten.)
Und wenn Sie das wirklich als Unit-Tests im test
ausführen möchten Phase, und Wenn Sie Ihr Plugin verwenden, müssen Sie die Standardausführung des maven-surefire-plugin
überspringen und definieren Sie dann eine Ausführung Ihres Maven-Plugins, das die Datenbank erstellt, eine neue Ausführung des maven-surefire-plugin
und eine Ausführung Ihres Maven-Plugins, das die Datenbank löscht, die an den test
gebunden ist Phase.
Dies funktioniert, weil Maven die Plugins in der Reihenfolge aufruft sie sind im POM definiert wenn sie an dieselbe Phase gebunden sind.
Eine Konfiguration würde wie folgt aussehen:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>default-test</id>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId><!-- group id of your plugin --></groupId>
<artifactId><!-- artifact id of your plugin --></artifactId>
<version><!-- version --></version>
<executions>
<execution>
<id>create-db</id>
<phase>test</phase>
<goals>
<goal><!-- your goal --></goal>
</goals>
<!-- add configuration -->
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<executions>
<execution>
<id>test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId><!-- group id of your plugin --></groupId>
<artifactId><!-- artifact id of your plugin --></artifactId>
<version><!-- version --></version>
<executions>
<execution>
<id>drop-db</id>
<phase>test</phase>
<goals>
<goal><!-- your goal --></goal>
</goals>
<!-- add configuration -->
</execution>
</executions>
</plugin>