maven : 명령 줄 옵션을 통해 일부 프로젝트에서 테스트를 건너 뛰려면 어떻게해야합니까?
내 maven 프로젝트에는 여러 모듈이 있습니다. 명령 줄 옵션을 통해 일부 모듈에 대한 단위 테스트 실행을 끌 수 있습니까?
내 프로젝트는 모든 단위 테스트를 실행하는 데 약 15 분이 걸립니다. 작업중인 모듈에서 단위 테스트 만 실행하여 전체 빌드 속도를 높이고 싶습니다. 나는 이것을 달성하기 위해 각각의 개별 pom.xml을 편집하고 편집하고 싶지 않습니다.
여기에 설명 된 솔루션을 시도해 보았습니다. maven을 통해 특정 testng 테스트 그룹을 실행할 수 있습니까? 그러나 결과는 건너 뛰고 싶은 모듈에서 많은 테스트 실패입니다. '그룹'이 모듈과 같은 개념이 아니라고 생각합니까?
전체 프로젝트에 대해 단위 테스트를 켜고 끄려면 Maven Surefire 플러그인의 테스트 건너 뛰기 기능을 사용합니다 . 명령 줄에서 skipTests를 사용하면 단점이 있습니다. 다중 모듈 빌드 시나리오에서 이것은 모든 모듈에서 모든 테스트를 비활성화합니다.
모듈에 대한 테스트 하위 집합을 실행하는 데 더 세밀한 제어가 필요한 경우 Maven Surefire 플러그인의 테스트 포함 및 제외 기능 사용을 고려하십시오 .
명령 줄 재정의를 허용하려면 Surefire 플러그인을 구성 할 때 POM 속성을 사용하십시오. 예를 들어 다음 POM 세그먼트를 살펴보십시오.
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.9</version>
<configuration>
<excludes>
<exclude>${someModule.test.excludes}</exclude>
</excludes>
<includes>
<include>${someModule.test.includes}</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<someModule.skip.tests>false</someModule.skip.tests>
<skipTests>${someModule.skip.tests}</skipTests>
<someModule.test.includes>**/*Test.java</someModule.test.includes>
<someModule.test.excludes>**/*Test.java.bogus</someModule.test.excludes>
</properties>
위와 같은 POM을 사용하면 다양한 방법으로 테스트를 실행할 수 있습니다.
- 모든 테스트 실행 (위 구성에는 모든 ** / * Test.java 테스트 소스 파일 포함)
mvn test
- 모든 모듈에서 모든 테스트 건너 뛰기
mvn -DskipTests=true test
- 특정 모듈에 대한 모든 테스트 건너 뛰기
mvn -DsomeModule.skip.tests=true test
- 특정 모듈에 대해 특정 테스트 만 실행합니다 (이 예에는 모든 ** / * IncludeTest.java 테스트 소스 파일 포함)
mvn -DsomeModule.test.includes="**/*IncludeTest.java" test
- 특정 모듈에 대한 특정 테스트 제외 (이 예에서는 모든 ** / * ExcludeTest.java 소스 파일 제외)
mvn -DsomeModule.test.excludes="**/*ExcludeTest.java" test
… 그리고 Hudson / Jenkins의 maven 릴리스 플러그인에 매개 변수를 전달하려면 -Darguments=-DskipTests
작동 하도록 사용해야 합니다.
명령 줄에서 제외하는 방법을 찾았습니다.
# Exclude one test class, by using the explanation mark (!)
mvn test -Dtest=!LegacyTest
# Exclude one test method
mvn verify -Dtest=!LegacyTest#testFoo
# Exclude two test methods
mvn verify -Dtest=!LegacyTest#testFoo+testBar
# Exclude a package with a wildcard (*)
mvn test -Dtest=!com.mycompany.app.Legacy*
출처 : https://blog.jdriven.com/2017/10/run-one-or-exclude-one-test-with-maven/
Maven 프로필을 사용하려는 경우 :
다음과 같이 작동하도록 만들 수 있습니다.
동일한 작업을 지원하는 명령 줄 옵션이 있는지 모르겠습니다.
You also might try using environment properties directly, something as per this doc page:
i.e. something like:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version>
<configuration>
<skipTests>${moduleA.skipTests}</skipTests>
</configuration>
</plugin>
then using mvn -DmoduleA.skipTests=false test
to test that one module.
'IT TIP' 카테고리의 다른 글
자동 완성 요청 / 서버 응답은 어떻게 생겼습니까? (0) | 2020.11.27 |
---|---|
기본적으로`git commit -v` (0) | 2020.11.27 |
git show / git diff에서 tabwidth를 4로 설정 (0) | 2020.11.27 |
% dopar %를 사용할 때 어떻게 인쇄 할 수 있습니까? (0) | 2020.11.27 |
셔플 대 영구 numpy (0) | 2020.11.27 |