Maven이 일부 실패한 경우에도 모든 테스트를 실행하도록 만들기


243

여러 모듈이있는 프로젝트가 있습니다. 모든 테스트가 통과되면 Maven 테스트가 모두 실행됩니다.

첫 번째 모듈에서 테스트가 실패하면 maven은 다음 프로젝트를 계속하지 않습니다. Surefire 설정에서 testFailureIgnore를 true로 설정했지만 도움이되지 않습니다.

maven에서 모든 테스트를 실행하려면 어떻게합니까?


어떤 버전의 maven-surefire-plugin?
Pascal Thivent

답변:


359

로부터 메이븐 베더 문서 :

-fae, --fail-at-end 이후에는 빌드 만 실패합니다. 영향을받지 않은 모든 빌드가 계속되도록 허용

-fn, --fail-never 에 관계없이 프로젝트 결과, 빌드를 실패하지 마십시오

따라서 하나의 모듈을 테스트하는 보다 안전 -fae합니다.

그렇지 않으면 여러 개의 모듈 이 있고 모든mvn clean install -fn 모듈을 테스트하려는 경우 (실패한 테스트 모듈에 의존하는 모듈도 포함)을 실행해야합니다 .
-fae실패한 테스트 (다른 ​​모든 테스트 실행)가있는 모듈은 계속되지만 해당 모듈에 종속 된 모든 모듈은 건너 뜁니다.


1
또한 cmd에 -e를 추가하여 일부 오류 정보를 제공 할 수 있습니다.
despot

11
방금 옵션을 테스트했습니다 --fail-never. 컴파일 오류가 있어도 Maven은 빌드에 실패하지 않습니다. Jenkins 에서이 옵션을 사용하면 많은 컴파일 오류가 있어도 빌드가 성공적으로 보입니다. 내가 선호하는 -Dmaven.test.failure.ignore=true이 경우와 젠킨스가 확실한 보고서를 분석 할 수 있습니다.
fuemf5

@wlnirvana이 링크를 사용하여 게시물을 편집했습니다. (따라서 의견을 삭제하십시오 ...)
Steve Chambers

93

방금 "-fae"매개 변수를 찾았는데, Maven은 모든 테스트를 실행하고 실패시 중지하지 않습니다.


3
안타깝게도 TeamCity에 전달할 때이 매개 변수가 작동하지 않습니다.
ripper234

4
다중 모듈 프로젝트에서 테스트에 실패한 모듈에 의존하는 모듈은 건너 뜁니다. 대신 -fn을 사용하십시오.
hipokito

2
@ ripper234 TeamCity에서 작동하게하는 방법을 찾았습니까?
Jeredriq Demas

86

surefire 2.6으로 테스트하고를 사용하여 surefire를 구성 할 수 있습니다 testFailureIgnore=true. 또는 명령 행에서 :

mvn install -Dmaven.test.failure.ignore=true

16
IIRC 이것은 모든 테스트를 실행하고 결국 실패하지 않고 전체 빌드가 실패하지 않는 효과가 있습니다.
Ondra Žižka 18

1
이것은 나를 위해 일한 유일한 옵션입니다 ... "-fae"옵션은 테스트 실패에 대해 아무것도하지 않았습니다
Yoi

38

루트 프로젝트 의 pom.xml에 surefire 플러그인에 대해 다음 구성을 추가하십시오 .

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <testFailureIgnore>true</testFailureIgnore>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

17

빠른 답변 :

mvn -fn test

중첩 된 프로젝트 빌드와 함께 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.