Изменение, когда maven запускает интеграционные тесты

У нас есть модульные тесты (mockito) и интеграционные тесты (база данных в памяти). Мы хотели бы, чтобы maven не запускал интеграционные тесты как часть «mvn install». По сути, я думаю, это означает перенастройку жизненного цикла, чтобы интеграционное тестирование проходило между установкой и развертыванием. Это возможно?

Причиной этого может быть то, что интеграционные тесты занимают некоторое время, и поэтому мы не хотим, чтобы они запускались каждый раз, когда разработчик выполняет установку. Но мы хотели бы, чтобы они были запущены, например, до того, как проект может быть выпущен.


person wytten    schedule 17.08.2012    source источник


Ответы (2)


Проверьте документацию плагина, который вы используете для запуска интеграционных тестов (возможно, Failsafe) — просто исключите тесты или установите для плагина значение false.

person TrueDub    schedule 17.08.2012
comment
Прямо сейчас наши модульные и интеграционные тесты выполняются surefire. Если бы разработчики могли, например, исключить **IntegrationTest.java в своих settings.xml (в отличие от pom), это могло бы стать решением. - person wytten; 17.08.2012
comment
@wytten Вы должны переименовать их в ... IT.java и вместо этого начать использовать отказоустойчивый ИМХО. - person artbristol; 17.08.2012
comment
Спасибо, это кажется лучшей практикой, но я до сих пор не знаю, как отложить их выполнение до более позднего этапа цикла. - person wytten; 17.08.2012
comment
Позже в цикле? Или вообще их отключить? Если вы просто хотите, чтобы они запускали другую фазу, сделайте следующее: переместите свои ИТ в отдельную исходную папку (стандартно — src/it/java) и настройте плагин Failsafe в файле pom. Затем ваши ИТ будут работать на этапе интеграционного тестирования процесса сборки maven. Это все равно будет работать, когда вы установите maven. Если вы просто хотите запускать их только тогда, когда будете готовы, я бы предложил перейти к использованию Failsafe (как указано выше), а затем создать новый профиль maven в вашем pom, где Failsafe включен. - person TrueDub; 17.08.2012
comment
Недавно мы открыли для себя категории junit и поэтому можем добиться этого без необходимости использования отказоустойчивости. Вот хорошее введение weblogs.java.net/blog/johnsmart/archive/2010/04/25/ - person wytten; 05.11.2012

Выполняют ли интеграционные тесты только один плагин (например, surefire)? Если это так, вероятно, проще просто привязать выполнение плагина к другой этап:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        ...
        <executions>
          <execution>
            <id>execution1</id>
            <phase>install</phase>
            <configuration>
            ...
            </configuration>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
person John Watts    schedule 17.08.2012
comment
Это интересная идея... В настоящее время и модульные, и интеграционные тесты выполняются surefire, но если мы переместим интеграционные тесты в отказоустойчивый режим и привяжем отказоустойчивый запуск к фазе развертывания, это может сработать. - person wytten; 17.08.2012
comment
Привяжите отказоустойчивый плагин к этапу интеграционного тестирования, а не к этапу развертывания. - person khmarbaise; 17.08.2012
comment
Вы также должны иметь возможность переопределить верную конфигурацию и независимо контролировать эти выполнения а-ля stackoverflow.com/questions/6760088/. Но использование другого плагина, такого как отказоустойчивый, — это еще один способ сделать почти то же самое. - person John Watts; 17.08.2012
comment
Это не работает; Я попытался привязать выполнение отказоустойчивого плагина к фазе развертывания, и он не запускал интеграционный тест перед развертыванием. - person wytten; 17.08.2012
comment
Вы пробовали этап установки? - person John Watts; 17.08.2012