어제 오늘 내일

[JUnit] TestSuite 사용법 – 여러 테스트 클래스를 하나로 묶기 본문

IT/JUnit

[JUnit] TestSuite 사용법 – 여러 테스트 클래스를 하나로 묶기

hi.anna 2026. 1. 11. 08:08

 

프로젝트가 커질수록 테스트 클래스도 함께 늘어납니다. 이때 여러 테스트 클래스를 하나로 묶어서 한 번에 실행하고 싶은 경우가 있습니다. JUnit에서는 이를 위해 TestSuite 기능(또는 @Suite)을 제공합니다.

JUnit4와 JUnit5는 사용하는 방식이 조금 다르기 때문에, 이 글에서는 JUnit5 기준으로 설명하고 필요 시 JUnit4 방식도 간단히 정리합니다.

 

1. TestSuite란?

TestSuite는 여러 개의 테스트 클래스를 하나의 그룹으로 묶어 한 번에 실행하는 기능입니다.
CI/CD 환경에서 특정 기능군 테스트를 묶어서 실행하거나, 모듈별 테스트 실행 시 자주 사용됩니다.

JUnit5에서는 @Suite 애너테이션을 사용하여 테스트 묶음을 구성합니다.

 

2. JUnit5 TestSuite 기본 사용법

JUnit5에서 테스트 스위트를 구성하려면 다음 애너테이션을 조합합니다.

  • @Suite – 스위트 선언
  • @SelectClasses – 포함할 테스트 클래스를 직접 지정
  • @SelectPackages – 패키지 단위로 테스트 선택

예제: 여러 테스트 클래스를 하나의 스위트로 묶기

import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({
        UserServiceTest.class,
        OrderServiceTest.class,
        ProductServiceTest.class
})
public class ServiceTestSuite {
}

설명

  • UserServiceTest, OrderServiceTest, ProductServiceTest 테스트를 한 번에 실행
  • 스위트 클래스(ServiceTestSuite)는 실제 테스트 코드를 가질 필요 없음
  • IDE 또는 빌드 툴에서 이 클래스만 실행하면 전체 스위트 실행 가능

 

3. 패키지 전체를 스위트로 묶기

테스트 클래스가 여러 개라면 일일이 나열하기 번거로울 수 있습니다.
이럴 때는 @SelectPackages를 사용합니다.

예제

import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectPackages("com.example.service")
public class ServicePackageTestSuite {
}

설명

  • com.example.service 패키지 아래의 모든 테스트 실행
  • 테스트가 추가되어도 스위트 코드 수정 없이 자동으로 포함됨
  • 대규모 프로젝트에서 매우 편리하게 사용 가능

 

4. 클래스 + 패키지 혼합 사용도 가능

원한다면 선택 방식을 혼합할 수도 있습니다.

@Suite
@SelectClasses({ AuthTest.class })
@SelectPackages("com.example.payment")
public class MixedTestSuite {
}

→ 특정 테스트 1개 + 특정 패키지 전체를 함께 실행

 

5. JUnit4 TestSuite 사용법 (참고용)

혹시 프로젝트가 아직 JUnit4를 사용 중이라면 다음 방식으로 TestSuite를 구성합니다.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({
        UserServiceTest.class,
        OrderServiceTest.class,
        ProductServiceTest.class
})
public class OldJUnit4TestSuite {
}

JUnit4에서는 @RunWith(Suite.class)와 @SuiteClasses를 조합해 사용했습니다.
JUnit5의 @Suite는 같은 기능을 더 유연하게 확장한 형태입니다.

 

6. TestSuite 사용 시 주의할 점

  1. 테스트 독립성 유지
    • 스위트 안의 테스트들은 서로 독립적이어야 하며 순서 의존성이 없어야 합니다.
  2. 공통 설정 문제
    • 테스트 환경이 공유된다면 @BeforeAll에서 설정 충돌이 발생할 수 있음
    • 각 테스트 클래스가 환경을 건드리지 않도록 설계 필요
  3. 패키지 스캔은 테스트 증가 시 유용하지만 주의 필요
    • 원치 않는 테스트가 실행될 수 있으므로 프로젝트 구조를 명확히 관리해야 함
  4. 스위트는 그룹 테스트 목적이지 단위 테스트 대체가 아님
    • 단위 테스트는 개별 실행 가능해야 하며 스위트는 편의를 제공하는 개념

 

7. 정리

  • TestSuite는 여러 테스트 클래스를 묶어 한 번에 실행하는 기능
  • JUnit5에서 @Suite, @SelectClasses, @SelectPackages로 구성
  • 패키지 단위 실행, 특정 클래스만 실행 등 다양한 조합 가능
  • 대규모 프로젝트에서 모듈별 테스트 실행 환경을 구축할 때 유용

 

 

반응형
Comments