0

У меня есть проект maven, в котором есть тесты интеграции на основе Selenium для запуска в пакете под названием sit. Я настроил отказоустойчивый плагин для включения тестовых файлов в пакет, например. <include>sit/**/*Test.java</include>.Пакет Maven war упал до запуска тестов

Я пытаюсь запустить mvn clean install, и когда он запускает тесты, я заметил, что он фактически не запускает плагин maven-war, т. Е. Не упаковал его в войну до запуска тестов. Если, однако, я запускаю mvn clean install -Dmaven.test.skip=true, то он успешно упаковывает войну. (У меня также есть плагин грузового сконфигурированный для развертывания войны, которая, как я заметил, был вопрос, как он не может развернуть несуществующую войну)

Структура моего П подобна ниже

<project ...> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>a</groupId> 
    <artifactId>a</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <dependencies> 
     ... 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.18.1</version> 

       <configuration> 
        <includes> 
         <include>sit/**/*Test.java</include> 
        </includes> 
       </configuration> 
       <executions> 
        <execution> 
         <id>integration-test</id> 
         <phase>integration-test</phase> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions>    
      </plugin> 
     </plugins> 
    </build> 
</project> 

Любые идеи, почему он не запускает военный плагин без установки -Dmaven.test.skip=true?

Это делает в оба сценария создания файлов класс

ответ

1

Хорошо, кажется, проблема была Maven-безошибочной пыталась запустить интеграционные тесты как модульные тесты, так что мы должны явно исключить интеграционные тесты из surefires модульных тестов

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    ... 
    <configuration> 
     <excludes> 
      <exclude>sit/**/*Test.java</exclude> 
     </excludes> 
    </configuration> 
</plugin> 
2

Попробуйте переименовать тестовые классы для интеграционных тестов, чтобы быть с *IT.java суффиксом (или префиксом ...), так как это соглашение для испытаний, которые будут работать на maven-failsafe-plugin.

*Test.java - еще одно соглашение для проведения испытаний по maven-surefire-plugin.

Так что не нужно их исключать, просто переименуйте его.