본문 바로가기
카테고리 없음

Maven에서 특정 테스트 클래스와 메소드 실행 방법

by blog-software 2025. 3. 26.
반응형
Maven에서 특정 테스트 클래스와 메소드 실행 방법

Maven은 자바 프로젝트의 빌드 및 의존성 관리를 위한 강력한 도구입니다. 특히, 테스트 실행에 대한 다양한 방법을 제공하여 개발자들이 효율적으로 코드를 검증할 수 있도록 돕습니다. 이번 블로그 글에서는 Maven에서 특정 테스트 클래스와 메소드를 실행하는 10가지 방법을 소개하겠습니다.

1. 기본 테스트 클래스 실행

Maven에서 특정 테스트 클래스를 실행하려면 다음 명령어를 입력합니다:

mvn -Dtest=TestClassName test

여기서 TestClassName은 실행하고자 하는 테스트 클래스의 이름입니다.

2. 특정 메소드 실행

특정 메소드만 실행하고 싶다면, 다음과 같이 메소드 이름을 추가합니다:

mvn -Dtest=TestClassName#testMethodName test

이 경우 testMethodName은 실행하고자 하는 메소드의 이름입니다.

3. 여러 테스트 클래스 실행

여러 클래스를 동시에 실행할 수 있습니다. 다음과 같이 쉼표로 구분하여 입력합니다:

mvn -Dtest=TestClass1,TestClass2 test

이 방법은 다양한 테스트를 한번에 실행하고자 할 때 유용합니다.

4. 테스트 패키지 실행

특정 패키지 내의 모든 테스트를 실행하려면 다음 명령어를 사용합니다:

mvn -Dtest=packageName.* test

여기서 packageName은 테스트가 포함된 패키지의 이름입니다.

5. Maven Surefire Plugin 설정

Maven Surefire Plugin을 사용하여 테스트를 관리할 수 있습니다. pom.xml 파일에 설정을 추가하여 특정 클래스를 실행하도록 할 수 있습니다:


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <includes>
                    <include>**/TestClassName.java</include>
                </includes>
            </configuration>
        </plugin>
    </plugins>
</build>

이렇게 설정하면 Maven 빌드 시 지정한 클래스만 실행됩니다.

6. 테스트 필터링

테스트 메소드의 이름 패턴을 통해 필터링할 수 있습니다:

mvn -Dtest=TestClassName#test* test

위 명령어는 test로 시작하는 메소드를 모두 실행합니다.

7. 특정 프로파일에서 테스트 실행

특정 프로파일을 활성화하여 테스트를 실행할 수 있습니다:

mvn -PprofileName -Dtest=TestClassName test

여기서 profileName은 실행할 프로파일의 이름입니다.

8. Maven Wrapper 사용

Maven Wrapper를 사용하면 프로젝트에 특정 Maven 버전이 포함되어, 환경에 구애받지 않고 동일한 테스트 환경을 유지할 수 있습니다. 다음과 같이 명령어를 입력합니다:

./mvnw -Dtest=TestClassName test

이 방법은 CI/CD 환경에서 특히 유용합니다.

9. JUnit5의 @TestInstance 사용

JUnit5에서는 @TestInstance 애너테이션을 사용하여 인스턴스당 테스트 메소드를 공유할 수 있습니다. 이렇게 하면 상태를 유지하며 테스트를 실행할 수 있습니다:

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class TestClassName {
    // ...
}

10. 커스텀 테스트 실행

다양한 조건에 따라 커스텀 테스트 실행을 설정할 수 있습니다. 이를 위해 maven-surefire-pluginsystemPropertyVariables를 활용하여 조건부 실행을 설정할 수 있습니다.

사례

아래의 표는 각각의 사례를 정리한 것입니다:

사례 설명
JUnit5와 Maven 연동 JUnit5를 사용하여 Maven 테스트를 실행할 때, mvn -Dtest=MyTestClass test 명령어로 간편하게 클래스별 실행이 가능합니다.
CI/CD 환경에서의 테스트 CI/CD 파이프라인에서 Maven Wrapper를 사용하면 특정 Maven 버전을 유지하며, 일관된 테스트 환경을 보장할 수 있습니다.
테스트 메소드 필터링 특정 메소드만 실행하고 싶을 때, mvn -Dtest=MyTestClass#myTestMethod test로 정확한 메소드를 실행할 수 있습니다.

실용적인 팁

팁 1: 테스트 커버리지 확인 - Maven과 JaCoCo를 연동하여 테스트 커버리지를 측정할 수 있습니다. pom.xml에 JaCoCo 플러그인을 추가하면 테스트의 커버리지를 시각적으로 확인할 수 있습니다. 이를 통해 테스트의 품질을 높이고, 누락된 테스트를 쉽게 찾아낼 수 있습니다.

팁 2: 병렬 테스트 실행 - Maven Surefire Plugin의 병렬 실행 기능을 활용하면 테스트 실행 속도를 크게 향상시킬 수 있습니다. pom.xmlforkCountreuseForks 옵션을 설정하여 테스트를 병렬로 실행할 수 있습니다.

팁 3: 테스트 메소드 이름 규칙 설정 - JUnit에서 테스트 메소드의 이름 규칙을 설정하면, 어떤 테스트가 어떤 기능을 검증하는지 쉽게 이해할 수 있습니다. 예를 들어, shouldReturnTrueWhenInputIsValid()와 같은 방식으로 메소드 이름을 작성하세요.

팁 4: 결과 리포트 생성 - Maven의 Surefire Plugin을 사용하면 테스트 결과를 HTML 형식으로 리포트할 수 있습니다. 이 결과는 팀원들과 공유하거나 문서화하는 데 유용합니다.

팁 5: 테스트 환경 분리 - Maven 프로파일을 사용하여 개발 환경과 테스트 환경을 분리하면, 각 환경에서 필요한 설정을 명확히 관리할 수 있습니다. 이를 통해 잘못된 설정으로 인한 오류를 예방할 수 있습니다.

요약 및 실천 팁


위에서 설명한 10가지 방법을 통해 Maven에서 특정 테스트 클래스와 메소드를 실행하는 것이 얼마나 간편한지 알 수 있습니다. 특히, 정확한 테스트 실행은 코드의 품질을 유지하는 데 필수적입니다. 실용적인 팁을 활용하여 테스트 환경을 최적화하고, CI/CD 파이프라인에서의 효율성을 높이세요. Maven의 다양한 기능을 활용하여 테스트를 관리하고, 품질 높은 소프트웨어 개발에 기여하세요!

반응형