Der er ingen bestemt fase i Maven livscyklus der svarer til før- og eftertest. Dette skyldes, at enhedstest ikke formodes at kræve et eksternt miljø. Det lyder som om, hvad du vil gøre, ikke er enhedstests, men integrationstests i stedet, fordi de kræver et miljø, der skal konfigureres.
Fra dokumenterne :
Og der er en pre-integration-test
, integration-test
og post-integration-test
der bruges til at opsætte, køre og ødelægge testmiljøet.
Som sådan ville det være nemmere og meget renere at gøre dette i integration-test
fase ved hjælp af maven-failsafe-plugin
.
Hvis du virkelig vil køre det som enhedstest, ville jeg ikke skrive oprettelsen/sletningen af databasen som et Maven-plugin. Det ville være meget bedre at lade din applikation oprette testdatabasen, når den er konfigureret i et testmiljø. (Hvis du f.eks. bruger Spring, har den mange faciliteter til det.)
Og hvis du virkelig vil køre det som enhedstester i test
fase, og ved at bruge dit plugin, bliver du nødt til at springe standardudførelsen af maven-surefire-plugin
over og definer derefter en udførelse af dit Maven-plugin, der skaber databasen, en ny udførelse af maven-surefire-plugin
og en udførelse af dit Maven-plugin, der dropper databasen, bundet til test
fase.
Dette virker, fordi Maven påberåber sig plugins i rækkefølgen som de er defineret i POM når de er bundet til samme fase.
En konfiguration vil se sådan ud:
<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>