V životním cyklu Maven nejsou žádné konkrétní fáze a> což odpovídá pre- a post-testu. Je to proto, že testy jednotek by neměly vyžadovat externí prostředí. Zdá se, že to, co chcete udělat, nejsou testy jednotek, ale integrační testy, protože vyžadují nastavení prostředí.
Z dokumentů :
A existuje pre-integration-test
, integration-test
a post-integration-test
které se používají k nastavení, spuštění a zničení testovacího prostředí.
Jako takové by bylo jednodušší a mnohem čistší to udělat v integration-test
fázi pomocí maven-failsafe-plugin
.
Nyní, pokud to opravdu chcete spustit jako testy jednotek, nepsal bych vytvoření / odstranění databáze jako plugin Maven. Bylo by mnohem lepší nechat vaši aplikaci vytvořit testovací databázi, když je nakonfigurována v testovacím prostředí. (Například, pokud používáte Spring, má pro to spoustu zařízení.)
A pokud to opravdu chcete spustit jako testy jednotek v test
fáze, a pomocí vašeho pluginu budete muset přeskočit výchozí spuštění maven-surefire-plugin
a poté definujte spuštění vašeho pluginu Maven vytvářející databázi, nové spuštění maven-surefire-plugin
a spuštění vašeho zásuvného modulu Maven, který zruší databázi vázanou na test
fáze.
Funguje to, protože Maven vyvolává pluginy v pořadí jak jsou definovány v POM když jsou vázány na stejnou fázi.
Konfigurace by vypadala takto:
<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>