2015-07-17 1 views
0

Значение свойства skipITs при переопределении в командной строке, по-видимому, игнорируется maven при использовании в сочетании с -Dit.test=full.Classname. Указанный отказоустойчивый тест не будет запущен (случай один).Является ли изоляция отказоустойчивых и надежных пробегов друг от друга с использованием подхода пропуска?

В отличие от этого спецификатора skipITs без переключателя it.test приводит к запуску существующих отказоустойчивых тестов (случай два).

Предыстория: Я пытаюсь изолировать тесты безотказной проверки при проверке отказоустойчивых тестов, либо выполняя их оба типа, либо только один из них. В Maven звонки:

mvn -Pintegration -DskipTests=true -DskipITs=false -Dit.test=full.Classname verify 

в первом случае и:

mvn -Pintegration -DskipTests=true -DskipITs=false verify 

во втором.

Соответствующая конфигурация (pom.xml, только фрагменты) являются:

<properties> 
    <skipTests>false</skipTests> 
    <skipITs>false</skipITs> 
</properties> 

(те по умолчанию) и

<profiles> 
    <profile> 
     <id>integration</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>custom<id> 
          <goals> 
           <goal>integration-test</goal> 
           <goal>verify</goal> 
          </goals> 
          <configuration> 
           <skipTests>${skipITs}</skipTests> 
           <skip>${skipITs}</skip> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

ли вы замечаете, что слишком или вы в конце концов, нашли лучший рабочий подход?

+0

Почему бы не использовать настройки по умолчанию, предоставляемые плагинами. '-DskipITs = true', чтобы пропустить интеграционные тесты maven-failafe-plugin и' -DskipTests = true', чтобы пропустить модульные тесты maven-surefire-plugin. Почему вы определяете свойства? – khmarbaise

+0

@khmarbaise '-DskipTests = true' также предотвратит выполнение плагином Failsafe любых тестов. OP хочет пропустить Surefire, но запустить Failsafe. – hzpz

ответ

1

По умолчанию Surefire плагин работает во время фазы тестирования и, как правило настроить отказоустойчивый плагин для запуска во время интеграционного тестирования и проверки фазы, как это:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.18.1</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>integration-test</goal> 
       <goal>verify</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Для запуск только Surefire тестов, использование

mvn clean test 

Чтобы запустить как безошибочный и отказоустойчивого тесты, использовать

mvn clean verify 

Вы можете полностью пропустить любой плагин, используя опцию конфигурации <skip>. Если настроить Surefire плагин так:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <configuration> 
     <skip>${skip.surefire}</skip> 
    </configuration> 
</plugin> 

вы можете запустить только отказоустойчивого тесты по телефону

mvn clean verify -Dskip.surefire=true 
0

Если тест интеграции (it.test) имеет имя не по умолчанию, мне нужно, чтобы добавить include шаблон соответственно, как и в (pom.xml сниппет):

<profiles> 
    <profile> 
     <id>dbUnit</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-failsafe-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>custom</id> 
          <goals> 
           <goal>integration-test</goal> 
           <goal>verify</goal> 
          </goals> 
          <configuration> 
           <skipTests>${skipITs}</skipTests> 
           <skip>${skipITs}</skip> 
           <includes> 
            <include>**/*DbTest.java</include> 
           </includes> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

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

+0

Вы должны использовать соглашения об именах, которые уже являются стандартными для maven-surefire/maven-отказоустойчивых, вместо того, чтобы их использовать. – khmarbaise

+0

Maven - это соглашение о конфигурации. @khmarbaise прав, не делайте свою жизнь тяжело, не следуя соглашениям! Кроме того, Stackoverflow не работает, как традиционная панель обсуждений. Есть один вопрос, и все остальное должно быть просто ответом на этот вопрос. Обсуждение может случиться в чате. – hzpz

Смежные вопросы