IT TIP

maven : 명령 줄 옵션을 통해 일부 프로젝트에서 테스트를 건너 뛰려면 어떻게해야합니까?

itqueen 2020. 11. 27. 21:53
반응형

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을 사용하면 다양한 방법으로 테스트를 실행할 수 있습니다.

  1. 모든 테스트 실행 (위 구성에는 모든 ** / * Test.java 테스트 소스 파일 포함)
mvn test
  1. 모든 모듈에서 모든 테스트 건너 뛰기
mvn -DskipTests=true test
  1. 특정 모듈에 대한 모든 테스트 건너 뛰기
mvn -DsomeModule.skip.tests=true test
  1. 특정 모듈에 대해 특정 테스트 만 실행합니다 (이 예에는 모든 ** / * IncludeTest.java 테스트 소스 파일 포함)
mvn -DsomeModule.test.includes="**/*IncludeTest.java" test
  1. 특정 모듈에 대한 특정 테스트 제외 (이 예에서는 모든 ** / * 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.

참고URL : https://stackoverflow.com/questions/9123075/maven-how-can-i-skip-test-in-some-projects-via-command-line-options

반응형