Er is geen specifieke fase in de Maven-levenscyclus die overeenkomt met pre- en post-test. Dit komt omdat unit tests geen externe omgeving zouden moeten vereisen. Het klinkt alsof u geen unit-tests wilt doen, maar in plaats daarvan integratietests, omdat hiervoor een omgeving moet worden ingesteld.
Uit de docs :
En er is een pre-integration-test
, integration-test
en post-integration-test
die worden gebruikt voor het opzetten, uitvoeren en vernietigen van de testomgeving.
Als zodanig zou het gemakkelijker en een stuk schoner zijn om dit te doen in integration-test
fase met behulp van de maven-failsafe-plugin
.
Als je dat echt als unit-tests wilt uitvoeren, zou ik het maken / verwijderen van de database niet als een Maven-plug-in schrijven. Het zou veel beter zijn om uw applicatie de testdatabase te laten maken wanneer deze in een testomgeving is geconfigureerd. (Als je bijvoorbeeld Spring gebruikt, heeft het daar veel faciliteiten voor.)
En als je dat echt wilt uitvoeren als unit-tests in de test
fase, en als u uw plug-in gebruikt, moet u de standaarduitvoering van de maven-surefire-plugin
overslaan en definieer vervolgens een uitvoering van uw Maven-plug-in die de database maakt, een nieuwe uitvoering van de maven-surefire-plugin
en een uitvoering van uw Maven-plug-in die de database laat vallen, gebonden aan de test
fase.
Dit werkt omdat Maven de plug-ins aanroept in de volgorde als ze worden gedefinieerd in de POM wanneer ze aan dezelfde fase gebonden zijn.
Een configuratie ziet er als volgt uit:
<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>