Não há uma fase específica no ciclo de vida do Maven que corresponde ao pré e pós-teste. Isso ocorre porque os testes de unidade não devem exigir um ambiente externo. Parece que o que você quer fazer não são testes de unidade, mas testes de integração, porque eles exigem que um ambiente seja configurado.
Dos documentos :
E há um
pre-integration-test
, integration-test
e post-integration-test
que são usados para configurar, executar e destruir o ambiente de teste. Como tal, seria mais fácil e muito mais limpo fazer isso em
integration-test
fase usando o maven-failsafe-plugin
. Agora, se você realmente deseja executar isso como testes de unidade, eu não escreveria a criação/exclusão do banco de dados como um plugin Maven. Seria muito melhor deixar seu aplicativo criar o banco de dados de teste quando estiver configurado em um ambiente de teste. (Por exemplo, se você estiver usando o Spring, ele tem muitos recursos para isso.)
E, se você realmente deseja executar isso como testes de unidade no
test
fase, e usando seu plugin, você terá que pular a execução padrão do maven-surefire-plugin
e então defina uma execução do seu plugin Maven criando o banco de dados, uma nova execução do maven-surefire-plugin
e uma execução do seu plugin Maven descartando o banco de dados, vinculado ao test
Estágio. Isso funciona porque o Maven invoca os plugins na ordem como eles são definidos no POM quando eles estão vinculados à mesma fase.
Uma configuração ficaria assim:
<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>