Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle phase maven sera toujours exécutée après la phase de test ?

Il n'y a pas de phase particulière dans le cycle de vie Maven qui correspond au pré-test et au post-test. En effet, les tests unitaires ne sont pas censés nécessiter un environnement externe. On dirait que ce que vous voulez faire, ce ne sont pas des tests unitaires, mais plutôt des tests d'intégration, car ils nécessitent la configuration d'un environnement.

À partir de la documentation :

Et il y a un pre-integration-test , integration-test et post-integration-test qui sont utilisés pour configurer, exécuter et détruire l'environnement de test.

En tant que tel, il serait plus facile et beaucoup plus propre de le faire dans integration-test phase en utilisant le maven-failsafe-plugin .

Maintenant, si vous voulez vraiment exécuter cela en tant que tests unitaires, je n'écrirais pas la création/suppression de la base de données en tant que plugin Maven. Il serait bien préférable de laisser votre application créer la base de données de test lorsqu'elle est configurée dans un environnement de test. (Par exemple, si vous utilisez Spring, il dispose de nombreuses fonctionnalités pour cela.)

Et, si vous voulez vraiment exécuter cela en tant que tests unitaires dans le test phases, et en utilisant votre plugin, vous devrez ignorer l'exécution par défaut du maven-surefire-plugin puis définissez une exécution de votre plugin Maven créant la base de données, une nouvelle exécution du maven-surefire-plugin et une exécution de votre plugin Maven en supprimant la base de données, liée au test étape.

Cela fonctionne car Maven invoque les plugins dans l'ordre as ils sont définis dans le POM lorsqu'ils sont liés à la même phase.

Une configuration ressemblerait à :

<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>