2016-04-27 12 views
1

Я работаю над Maven based Java open source project hosted on Github. Мы используем Travis для непрерывной интеграции.Исключить тест от Travis

Некоторые из более сложных тестов JUnit в настоящее время не проходят в среде Travis, хотя они проходят локально.

Вопрос: Есть ли простой и простой способ отметить определенные классы тестов или методы как «Не запускать на Travis», чтобы мы могли двигаться вперед, пока я выяснял, как исправить среду Travis для этих тестов?

+1

Я бы спросил, почему эти тесты не работают на travis? Таким образом, вы делаете все в тестах, которые вам не следует делать, потому что вы говорите, что они работают локально, но на трависе они этого не делают .... Я бы глубоко изучил эти тесты, почему они не работают на travis. , – khmarbaise

ответ

2

Возможное решение заключается в добавлении maven profile к соответствующему проекту и настройке maven-surefire-plugin на exclude этих тестов из его выполнения цели тестирования.

Примером может быть:

<profiles> 
    <profile> 
     <id>trasis</id> 
     <build> 
      <plugins> 
       <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <excludes> 
        <!-- exclude tests here --> 
        <exclude>**/TestCircle.java</exclude> 
        <exclude>**/TestSquare.java</exclude> 
        </excludes> 
       </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

Тогда ваш trasis сборка должна работать

mvn clean install -Ptrasis 

Который будет:

  • активировать профиль выше
  • применять индивидуальные настройки для Плагин Surefire
  • исключить настроенные тесты (шаблоны) от испытательной фазы

Этот профиль может быть затем проигнорированы локальной сборки, все еще активен на Trasis. После устранения проблемы его можно полностью удалить из конфигурации trasis и из самого файла pom.


В качестве альтернативы, и особенно, если вы не можете изменить заинтересованный файл POM, вы можете исключить тесты (и методы) с использованием test опции и хорошо умыслом регулярного выражения:

С 2.19 сложным синтаксисом поддерживается в одном параметре (JUnit 4, JUnit 4.7+, TestNG):
"-Dtest=???Test, !Unstable*, pkg/**/Ci*leTest.java, *Test#test*One+testTwo?????, #fast*+slowTest"
"-Dtest=Basic*, !%regex[.*.Unstable.*], !%regex[.*.MyTest.class#one.*|two.*], %regex[#fast.*|slow.*]"

mvn clean install -Dtest=*Test,!FromThisClass#excludeThisMethod