sql >> Databáze >  >> RDS >> Mysql

Která maven fáze bude vždy provedena po testovací fázi?

V životním cyklu Maven nejsou žádné konkrétní fáze a> což odpovídá pre- a post-testu. Je to proto, že testy jednotek by neměly vyžadovat externí prostředí. Zdá se, že to, co chcete udělat, nejsou testy jednotek, ale integrační testy, protože vyžadují nastavení prostředí.

Z dokumentů :

A existuje pre-integration-test , integration-test a post-integration-test které se používají k nastavení, spuštění a zničení testovacího prostředí.

Jako takové by bylo jednodušší a mnohem čistší to udělat v integration-test fázi pomocí maven-failsafe-plugin .

Nyní, pokud to opravdu chcete spustit jako testy jednotek, nepsal bych vytvoření / odstranění databáze jako plugin Maven. Bylo by mnohem lepší nechat vaši aplikaci vytvořit testovací databázi, když je nakonfigurována v testovacím prostředí. (Například, pokud používáte Spring, má pro to spoustu zařízení.)

A pokud to opravdu chcete spustit jako testy jednotek v test fáze, a pomocí vašeho pluginu budete muset přeskočit výchozí spuštění maven-surefire-plugin a poté definujte spuštění vašeho pluginu Maven vytvářející databázi, nové spuštění maven-surefire-plugin a spuštění vašeho zásuvného modulu Maven, který zruší databázi vázanou na test fáze.

Funguje to, protože Maven vyvolává pluginy v pořadí jak jsou definovány v POM když jsou vázány na stejnou fázi.

Konfigurace by vypadala takto:

<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. Spočítejte řádky po spojení tří tabulek v PostgreSQL

  2. Klíčové slovo FROM nebylo nalezeno, kde se očekávalo

  3. oracle 11g a integrace hibernate spring a jsf

  4. Volání uložené procedury T-SQL ADO.NET způsobí výjimku SqlTimeoutException