Плагин Maven Failsafe: как использовать фазы до и после интеграции

Мне не совсем понятно, как лучше всего использовать плагин Maven Failsafe для тестов интеграции. Моим вариантом использования будет проверка SQL-запросов в локальной базе данных MySQL.

Я понимаю, что база данных должна быть запущена во время фазы pre-integration-test и выключена во время post-integration-test. Но как я могу это указать? Есть ли командная строка, которую я должен положить в мой pom.xml? Или метод, который я должен аннотировать с помощью конкретной аннотации?

Ответ 1

В регулярном встроенных жизненных циклах maven (jar, war...) фазы тестирования pre-integration-test и post-integration-test не являются связанный с любым плагином maven (т.е. поведение по умолчанию этих фаз "ничего не делает" ). Если вы хотите настроить и заполнить базу данных для тестов, выполненных в фазе integration-test, вам необходимо привязать плагин maven, выполнив это задание к этим этапам.

Плагин SQL maven выполняет SQL script в maven-сборке. Конфигурация для привязки этого плагина к pre/post-integration-phase довольно проста:

В разделе build > plugins файла pom.xml добавьте sql-maven-plugin

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sql-maven-plugin</artifactId>
    <version>1.5</version>
    <dependencies>
      <!-- include the JDBC driver dependency here -->
      <dependency>
        <groupId>...</groupId>
        <artifactId>...</artifactId>
        <version>...</version>
      </dependency>
    </dependencies>

    <!-- common plugin configuration -->
    <configuration>
      <driver>...</driver>
      <url>...</url>
      <username>...</username>
      <password>...</password>
      <!-- other parameters -->
    </configuration>

    <!-- the executions section binds the phases with some plugin goals and optional additional configuration parameters -->
    <executions>
      <execution>
        <phase>pre-integration-test</phase>
        <goals>
          <goal>execute</goal>
        </goals>
        <!-- specific configuration for this execution -->
        <configuration>
          <!-- Include here the SQL scripts to create the DB, inject some test data -->
        </configuration>
      </execution>
      <execution>
        <phase>post-integration-test</phase>
        <goals>
          <goal>execute</goal>
        </goals>
        <configuration>
          <!-- Include here the SQL scripts to drop the database -->
        </configuration>
      </execution>
      [...]
    </executions>
  </plugin>

Это должно сделать трюк.