sql >> Database >  >> RDS >> Mysql

Welke maven-fase wordt altijd uitgevoerd na de testfase?

Er is geen specifieke fase in de Maven-levenscyclus die overeenkomt met pre- en post-test. Dit komt omdat unit tests geen externe omgeving zouden moeten vereisen. Het klinkt alsof u geen unit-tests wilt doen, maar in plaats daarvan integratietests, omdat hiervoor een omgeving moet worden ingesteld.

Uit de docs :

En er is een pre-integration-test , integration-test en post-integration-test die worden gebruikt voor het opzetten, uitvoeren en vernietigen van de testomgeving.

Als zodanig zou het gemakkelijker en een stuk schoner zijn om dit te doen in integration-test fase met behulp van de maven-failsafe-plugin .

Als je dat echt als unit-tests wilt uitvoeren, zou ik het maken / verwijderen van de database niet als een Maven-plug-in schrijven. Het zou veel beter zijn om uw applicatie de testdatabase te laten maken wanneer deze in een testomgeving is geconfigureerd. (Als je bijvoorbeeld Spring gebruikt, heeft het daar veel faciliteiten voor.)

En als je dat echt wilt uitvoeren als unit-tests in de test fase, en als u uw plug-in gebruikt, moet u de standaarduitvoering van de maven-surefire-plugin overslaan en definieer vervolgens een uitvoering van uw Maven-plug-in die de database maakt, een nieuwe uitvoering van de maven-surefire-plugin en een uitvoering van uw Maven-plug-in die de database laat vallen, gebonden aan de test fase.

Dit werkt omdat Maven de plug-ins aanroept in de volgorde als ze worden gedefinieerd in de POM wanneer ze aan dezelfde fase gebonden zijn.

Een configuratie ziet er als volgt uit:

<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. Is er een snelle manier om te controleren of ELKE kolom NULL is?

  2. Negeert MySQL null-waarden op unieke beperkingen?

  3. Back-up en herstel van FILESTREAM-enabled database

  4. Gegevens weergeven in een RecyclerView