Mysql
 sql >> база данни >  >> RDS >> Mysql

Коя maven фаза винаги ще се изпълнява след тестовата фаза?

Няма конкретна фаза в жизнения цикъл на Maven което съответства на пред- и след-теста. Това е така, защото модулните тестове не трябва да изискват външна среда. Изглежда, че това, което искате да правите, не са модулни тестове, а интеграционни тестове вместо това, защото те изискват настройка на среда.

От документи :

Има и pre-integration-test , integration-test и post-integration-test които се използват за настройка, изпълнение и унищожаване на тестовата среда.

Като такова би било по-лесно и много по-чисто да направите това в integration-test фаза с помощта на maven-failsafe-plugin .

Сега, ако наистина искате да стартирате това като модулни тестове, не бих написал създаването/изтриването на базата данни като плъгин на Maven. Би било много по-добре да позволите на вашето приложение да създаде тестова база данни, когато е конфигурирано в тестова среда. (Например, ако използвате Spring, той има много възможности за това.)

И ако наистина искате да изпълните това като модулни тестове в test фаза, и като използвате вашия плъгин, ще трябва да пропуснете изпълнението по подразбиране на maven-surefire-plugin и след това дефинирайте изпълнение на вашия плъгин Maven, създавайки базата данни, ново изпълнение на maven-surefire-plugin и изпълнение на вашия плъгин Maven, премахвайки базата данни, обвързана с test фаза.

Това работи, защото Maven извиква добавките в реда като те са дефинирани в POM когато са обвързани с една и съща фаза.

Конфигурацията ще изглежда така:

<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. Добра превенция от MYSQL инжектиране?

  2. Свързване на параметри към mysql заявка

  3. MySql – опит за импортиране на база данни, получаване на съобщение „Системата не може да намери посочения файл.“

  4. Има ли MySQL еквивалент на TIMESTAMP на Oracle С ЧАСОВА ЗОНА?

  5. ГРЕШКА:Грешка при инсталиране на mysql2:ГРЕШКА:Неуспешно изграждане на собствено разширение на gem