Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Która faza maven będzie zawsze wykonywana po fazie testów?

Nie ma określonej fazy w cyklu życia Maven co odpowiada przed i po teście. Dzieje się tak, ponieważ testy jednostkowe nie powinny wymagać środowiska zewnętrznego. Wygląda na to, że to, co chcesz zrobić, to nie testy jednostkowe, ale testy integracyjne, ponieważ wymagają one skonfigurowania środowiska.

Z dokumentacji :

Jest też pre-integration-test , integration-test i post-integration-test które są używane do konfiguracji, uruchamiania i niszczenia środowiska testowego.

W związku z tym łatwiej i czyściej byłoby to zrobić w integration-test faza za pomocą maven-failsafe-plugin .

Teraz, jeśli naprawdę chcesz uruchomić to jako testy jednostkowe, nie napisałbym tworzenia / usuwania bazy danych jako wtyczki Maven. Dużo lepiej byłoby pozwolić aplikacji na tworzenie testowej bazy danych, gdy jest ona skonfigurowana w środowisku testowym. (Na przykład, jeśli używasz Springa, ma do tego wiele udogodnień.)

A jeśli naprawdę chcesz uruchomić to jako testy jednostkowe w test faza, i używając twojej wtyczki, będziesz musiał pominąć domyślne wykonanie maven-surefire-plugin a następnie zdefiniuj wykonanie wtyczki Maven tworząc bazę danych, nowe wykonanie maven-surefire-plugin i wykonanie wtyczki Maven upuszczającej bazę danych, powiązaną z test faza.

Działa to, ponieważ Maven wywołuje wtyczki w kolejności jako są zdefiniowane w POM kiedy są związane z tą samą fazą.

Konfiguracja wyglądałaby tak:

<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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Solenie moich hashów za pomocą PHP i MySQL

  2. Ograniczenie niektórych użytkowników tylko do ich danych we wspólnej tabeli

  3. Niestandardowy obszar administracyjny Opencart -> zapytania pokazujące tylko pierwszy rekord tabel

  4. Ogranicz wartość typu danych MySQL do określonego zakresu (najlepiej nie ENUM)

  5. Łączenie tabel z dwóch baz danych za pomocą codeignitera