0

sit이라는 패키지에서 실행될 셀렌 기반 통합 테스트가있는 maven 프로젝트가 있습니다. 예를 들어 패키지에 테스트 파일을 포함하도록 failsafe 플러그인을 구성했습니다. <include>sit/**/*Test.java</include>.테스트 실행 전에 Maven war 패키징을 건너 뛰었습니다.

나는 mvn clean install을 실행하려고 시도하고 있는데 테스트를 시작할 때 실제로 테스트를 실행하기 전에 전쟁에 패키지화하지 않았으므로 실제로는 maven-war-plugin을 실행하지 않은 것으로 나타났습니다. 그러나 내가 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

가 확인이 문제가-확실한 받는다는 단위 테스트와 통합 테스트를 실행하려고 하였다 보인다 클래스 파일을 작성, 그래서 우리는 명시 적으로 surefires 단위 테스트에서 통합 테스트를 제외 할 필요에 그것은 않습니다 통합 테스트는 *IT.java 접미사 (또는 접두사 ...)와 함께하는이 시험은 maven-failsafe-plugin에 의해 운영 할의 규칙이기 때문에

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

시도는 테스트 클래스의 이름을 변경합니다.

은 검사를 실행하는 또 다른 규칙으로 maven-surefire-plugin입니다.

제외 할 필요가 없으므로 이름을 바꿉니다.