Maven으로 테스트 건너 뛰기

1. 소개

테스트를 건너 뛰는 것은 종종 나쁜 생각입니다. 그러나 유용 할 수있는 몇 가지 상황이 있습니다. 새 코드를 개발하고 테스트가 통과하거나 컴파일되지 않는 중간 빌드를 실행하려는 경우 일 수 있습니다.

이러한 상황에서만 컴파일하고 실행하는 오버 헤드를 피하기 위해 테스트를 건너 뛸 수 있습니다. 물론 테스트를 실행하지 않으면 잘못된 코딩 관행으로 이어질 수 있습니다.

이 빠른 자습서에서는 Maven을 사용하여 테스트를 건너 뛸 수 있는 모든 명령과 옵션을 살펴 봅니다.

2. Maven 라이프 사이클

테스트를 건너 뛰는 방법에 대해 자세히 알아보기 전에 테스트가 컴파일되거나 실행되는시기를 이해해야합니다 . Maven 목표 및 단계에 대한 기사에서는 Maven 라이프 사이클의 개념에 대해 자세히 설명하지만이 기사에서는 Maven이 다음을 수행 할 수 있음을 아는 것이 중요합니다.

  1. 테스트 무시
  2. 테스트 컴파일
  3. 테스트 실행

예제에서는 테스트 컴파일 및 실행을 포함하는 패키지 단계를 사용합니다 . 이 튜토리얼에서 살펴본 옵션은 Maven Surefire 플러그인에 속합니다.

3. 명령 줄 플래그 사용

3.1. 테스트 컴파일 건너 뛰기

먼저 컴파일되지 않는 테스트의 예를 살펴 보겠습니다.

@Test public void thisDoesntCompile() { baeldung; }

명령 줄 명령을 실행할 때 :

mvn package

오류가 발생합니다.

[INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/baeldung/skip-tests/src/test/java/com/antmordel/skiptests/PowServiceTest.java:[11,9] not a statement [INFO] 1 error

따라서 테스트 소스 의 컴파일 단계를 건너 뛰는 방법을 살펴 보겠습니다 . Maven에서는 maven.test.skip 플래그를 사용할 수 있습니다 .

mvn -Dmaven.test.skip package

결과적으로 테스트 소스가 컴파일되지 않으므로 실행되지 않습니다.

3.2. 테스트 실행 건너 뛰기

두 번째 옵션으로 테스트 폴더를 컴파일하고 실행 프로세스를 건너 뛸 수있는 방법 살펴 보겠습니다 . 이것은 메서드 나 클래스의 서명을 변경하지 않고 비즈니스 로직을 변경 한 결과 테스트를 위반 한 경우에 유용합니다. 항상 실패하는 아래와 같은 인위적인 테스트 케이스를 고려해 봅시다.

@Test public void thisTestFails() { fail("This is a failed test case"); }

fail () 문을 포함했기 때문에 패키지 단계를 실행 하면 빌드가 실패하고 오류가 발생합니다.

[ERROR] Failures: [ERROR] PowServiceTest.thisTestFails:16 This is a failed test case [INFO] [ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

테스트 실행을 건너 뛰고 싶지만 여전히 컴파일하고 싶다고 가정 해 봅시다. 이 경우 -DskipTests 플래그를 사용할 수 있습니다 .

mvn -DskipTests package

패키지 단계가 성공합니다. 또한 Maven에는 maven failsafe 플러그인이라는 통합 테스트를 실행하기위한 전용 플러그인이 있습니다. -DskipTests는 모두 유닛 테스트 (확실한) 및 통합 테스트 (안전 장치)의 이동을 실행한다. 통합 테스트를 건너 뛰기 위해 -DskipITs 시스템 속성을 전달할 수 있습니다 .

마지막으로, 현재 사용되지 않는 플래그 -Dmaven.test.skip.exec 도 테스트 클래스를 컴파일하지만 실행하지는 않는다는 점을 언급 할 가치가 있습니다.

4. Maven 구성 사용

In the case that we need to exclude compiling or running the tests for a longer period of time, we can modify the pom.xml file in order to include the proper configuration.

4.1. Skipping the Test Compilation

As we did in the previous section, let's examine how we can avoid compiling the test folder. In this case, we'll use the pom.xml file. Let's add the following property:

 true 

Keep in mind that we can override that value by adding the opposite flag in the command line:

mvn -Dmaven.test.skip=false package

4.2. Skipping the Test Execution

다시 두 번째 단계로 테스트 폴더를 빌드 하고 Maven 구성을 사용하여 테스트 실행건너 뛸 수 있는 방법 살펴 보겠습니다 . 이를 위해 속성으로 Maven Surefire 플러그인을 구성해야합니다.

 true   org.apache.maven.plugins maven-surefire-plugin 2.22.1  ${tests.skip}  

Maven 속성 tests.skip 은 이전에 정의한 사용자 지정 속성입니다. 따라서 테스트를 실행하려면 재정의 할 수 있습니다.

mvn -Dtests.skip=false package

4. 결론

이 빠른 자습서에서는 테스트 컴파일 및 / 또는 실행을 건너 뛰기 위해 Maven이 제공하는 모든 대안을 탐색했습니다.

Maven 명령 줄 옵션과 Maven 구성 옵션을 살펴 보았습니다.