sql >> Base de Datos >  >> RDS >> Mysql

¿Qué fase maven se ejecutará siempre después de la fase de prueba?

No hay una fase particular en el ciclo de vida de Maven que corresponde al pre- y post-test. Esto se debe a que se supone que las pruebas unitarias no requieren un entorno externo. Parece que lo que desea hacer no son pruebas unitarias, sino pruebas de integración, porque requieren que se configure un entorno.

De los docs :

Y hay una pre-integration-test , integration-test y post-integration-test que se utilizan para configurar, ejecutar y destruir el entorno de prueba.

Como tal, sería más fácil y mucho más limpio hacer esto en integration-test fase usando el maven-failsafe-plugin .

Ahora, si realmente desea ejecutar eso como pruebas unitarias, no escribiría la creación/eliminación de la base de datos como un complemento de Maven. Sería mucho mejor dejar que su aplicación cree la base de datos de prueba cuando esté configurada en un entorno de prueba. (Por ejemplo, si está usando Spring, tiene muchas facilidades para eso).

Y, si realmente desea ejecutar eso como pruebas unitarias en test fase, y usando su complemento, deberá omitir la ejecución predeterminada del maven-surefire-plugin y luego defina una ejecución de su complemento Maven creando la base de datos, una nueva ejecución del maven-surefire-plugin y una ejecución de su complemento Maven que elimina la base de datos, vinculada a la test fase.

Esto funciona porque Maven invoca los complementos en el orden como se definen en el POM cuando están vinculados a la misma fase.

Una configuración se vería así:

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