sql >> Database teknologi >  >> RDS >> Mysql

Hvilken maven-fase vil altid blive udført efter testfasen?

Der er ingen bestemt fase i Maven livscyklus der svarer til før- og eftertest. Dette skyldes, at enhedstest ikke formodes at kræve et eksternt miljø. Det lyder som om, hvad du vil gøre, ikke er enhedstests, men integrationstests i stedet, fordi de kræver et miljø, der skal konfigureres.

Fra dokumenterne :

Og der er en pre-integration-test , integration-test og post-integration-test der bruges til at opsætte, køre og ødelægge testmiljøet.

Som sådan ville det være nemmere og meget renere at gøre dette i integration-test fase ved hjælp af maven-failsafe-plugin .

Hvis du virkelig vil køre det som enhedstest, ville jeg ikke skrive oprettelsen/sletningen af ​​databasen som et Maven-plugin. Det ville være meget bedre at lade din applikation oprette testdatabasen, når den er konfigureret i et testmiljø. (Hvis du f.eks. bruger Spring, har den mange faciliteter til det.)

Og hvis du virkelig vil køre det som enhedstester i test fase, og ved at bruge dit plugin, bliver du nødt til at springe standardudførelsen af ​​maven-surefire-plugin over og definer derefter en udførelse af dit Maven-plugin, der skaber databasen, en ny udførelse af maven-surefire-plugin og en udførelse af dit Maven-plugin, der dropper databasen, bundet til test fase.

Dette virker, fordi Maven påberåber sig plugins i rækkefølgen som de er defineret i POM når de er bundet til samme fase.

En konfiguration vil se sådan ud:

<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. opret tabel med sequence.nextval i oracle

  2. Store_result og get_result for statement

  3. Rails 3 migrationer:boolesk (mysql vs postgreSQL)

  4. Læser klump linje for linje med pl\sql