2015-01-26 2 views
0

Я настроил профиль для запуска только тестов интеграции, но он все еще запускает все тесты. Это конфигурация:Maven Профиль не запускает подходящие тесты

<profile> 
     <id>integration</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.18.1</version> 
        <executions> 
         <execution> 
          <id>integration-test</id> 
          <goals> 
           <goal>test</goal> 
          </goals> 
          <phase>test</phase> 
          <configuration> 
           <includes> 
            <include>**/*IT.java</include> 
           </includes> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

Я попытался с регулярным выражением, как объяснено в http://maven.apache.org/surefire/maven-surefire-plugin/examples/inclusion-exclusion.html, но я это не работает. Как получить только те тесты, которые заканчиваются с IT.java?

Благодаря

+2

Сначала нужно использовать maven-отказоустойчивый плагин вместо плагина maven-surefire. Оба плагина имеют соответствующие схемы именования (* Test.java, * TestCase.java, Test * .java для уверенности, тогда как для [отказоустойчивого: * IT.java и т. Д.] (Http://maven.apache.org/surefire/maven- безотказный-плагин/интеграция тест-mojo.html # включает в себя)). Помимо того, что текущие тесты интеграции на тестовой фазе неверны, вызывают фазу жизненного цикла интеграции-тестирования, которая в точности предназначена для этого. Кроме того, здесь лучше всего иметь полный файл pom. – khmarbaise

ответ

0

Вы не перенастроены безошибочный бежать, но вместо этого добавил еще один в жизненном цикле. Таким образом, безошибочный: тест выполняется дважды, один раз с выполнения по умолчанию идентификатор (default-test) и один раз с новым исполнением (integration-test)

Если вы просто хотите изменить тесты запускаемых, вы можете использовать:

<profile> 
    <id>integration</id> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.18.1</version> 
       <configuration> 
        <includes> 
         <include>**/*IT.java</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

Это может привести только к изменению существующего исполнения.

Тем не менее, поскольку khmarbaise уже написал в комментарии, имеет смысл использовать просто maven-failsafe-plugin. Если вы действительно хотели пропустить обычный модульный тест (зачем вам это вообще нужно?), Вы можете явно отключить верность в своем профиле (используя skipTests -configuration).

+0

Привет, спасибо вам обоим за гело. @blackbuild: нет, я не хочу удалять unittesting. Запуск теста mvn должен запускать только unittests, «mvn test -PsoapUi» должен запускать интегрированные soapUi-Tests, а «mvn test -Pintegration» должен запускать только тесты, заканчивающиеся на IT. Я удалил выполнение и добавил его. –