sql >> Databasteknik >  >> RDS >> Mysql

Vilken maven-fas kommer alltid att exekveras efter testfasen?

Det finns ingen speciell fas i Mavens livscykel a> som motsvarar för- och eftertest. Detta beror på att enhetstester inte är tänkta att kräva en extern miljö. Det låter som att det du vill göra inte är enhetstester utan integrationstester istället, eftersom de kräver en miljö för att ställas in.

Från dokumenten :

Och det finns ett pre-integration-test , integration-test och post-integration-test som används för att ställa in, köra och förstöra testmiljön.

Som sådan skulle det vara enklare och mycket renare att göra detta i integration-test fas med maven-failsafe-plugin .

Nu, om du verkligen vill köra det som enhetstester, skulle jag inte skriva skapandet / raderingen av databasen som ett Maven-plugin. Det skulle vara mycket bättre att låta din applikation skapa testdatabasen när den är konfigurerad i en testmiljö. (Om du till exempel använder Spring har den många faciliteter för det.)

Och om du verkligen vill köra det som enhetstester i test fas, och med ditt plugin måste du hoppa över standardexekveringen av maven-surefire-plugin och definiera sedan en körning av din Maven-plugin som skapar databasen, en ny körning av maven-surefire-plugin och en körning av din Maven-plugin som släpper databasen, bunden till test fas.

Detta fungerar eftersom Maven anropar plugins i ordningen som de definieras i POM när de är bundna till samma fas.

En konfiguration skulle se ut så här:

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



  1. Effektiv konvertering av OracleDecimal till .NET-decimal med trunkering

  2. lägga till sträng till en select-sats som ska inkluderas i resultatuppsättningen

  3. MySQL - Hur kör man flera uppdateringsfrågor på en rad?

  4. Skillnad mellan nyckel, primärnyckel, unik nyckel och index i MySQL