Няма конкретна фаза в жизнения цикъл на Maven което съответства на пред- и след-теста. Това е така, защото модулните тестове не трябва да изискват външна среда. Изглежда, че това, което искате да правите, не са модулни тестове, а интеграционни тестове вместо това, защото те изискват настройка на среда.
От документи :
Има и pre-integration-test
, integration-test
и post-integration-test
които се използват за настройка, изпълнение и унищожаване на тестовата среда.
Като такова би било по-лесно и много по-чисто да направите това в integration-test
фаза с помощта на maven-failsafe-plugin
.
Сега, ако наистина искате да стартирате това като модулни тестове, не бих написал създаването/изтриването на базата данни като плъгин на Maven. Би било много по-добре да позволите на вашето приложение да създаде тестова база данни, когато е конфигурирано в тестова среда. (Например, ако използвате Spring, той има много възможности за това.)
И ако наистина искате да изпълните това като модулни тестове в test
фаза, и като използвате вашия плъгин, ще трябва да пропуснете изпълнението по подразбиране на maven-surefire-plugin
и след това дефинирайте изпълнение на вашия плъгин Maven, създавайки базата данни, ново изпълнение на maven-surefire-plugin
и изпълнение на вашия плъгин Maven, премахвайки базата данни, обвързана с test
фаза.
Това работи, защото Maven извиква добавките в реда като те са дефинирани в POM когато са обвързани с една и съща фаза.
Конфигурацията ще изглежда така:
<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>