반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Array
- 단위테스트
- 정규식
- 배열
- 자바
- junit
- Java
- html
- 자바문법
- CSS
- 테스트자동화
- junit5
- javascript
- 이클립스
- 인텔리제이
- list
- math
- HashMap
- Visual Studio Code
- IntelliJ
- Eclipse
- 자바스크립트
- ArrayList
- json
- input
- java테스트
- js
- 문자열
- vscode
- string
Archives
- Today
- Total
어제 오늘 내일
[JUnit] TestSuite 사용법 – 여러 테스트 클래스를 하나로 묶기 본문
프로젝트가 커질수록 테스트 클래스도 함께 늘어납니다. 이때 여러 테스트 클래스를 하나로 묶어서 한 번에 실행하고 싶은 경우가 있습니다. 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 사용 시 주의할 점
- 테스트 독립성 유지
- 스위트 안의 테스트들은 서로 독립적이어야 하며 순서 의존성이 없어야 합니다.
- 공통 설정 문제
- 테스트 환경이 공유된다면 @BeforeAll에서 설정 충돌이 발생할 수 있음
- 각 테스트 클래스가 환경을 건드리지 않도록 설계 필요
- 패키지 스캔은 테스트 증가 시 유용하지만 주의 필요
- 원치 않는 테스트가 실행될 수 있으므로 프로젝트 구조를 명확히 관리해야 함
- 스위트는 그룹 테스트 목적이지 단위 테스트 대체가 아님
- 단위 테스트는 개별 실행 가능해야 하며 스위트는 편의를 제공하는 개념
7. 정리
- TestSuite는 여러 테스트 클래스를 묶어 한 번에 실행하는 기능
- JUnit5에서 @Suite, @SelectClasses, @SelectPackages로 구성
- 패키지 단위 실행, 특정 클래스만 실행 등 다양한 조합 가능
- 대규모 프로젝트에서 모듈별 테스트 실행 환경을 구축할 때 유용
반응형
'IT > JUnit' 카테고리의 다른 글
| [JUnit] run() 메소드 – 테스트 실행 흐름 따라가기 (0) | 2026.01.12 |
|---|---|
| [JUnit] suite() 메소드 – 테스트 묶음 구성 패턴 (0) | 2026.01.12 |
| [JUnit] @TestMethodOrder – 테스트 실행 순서 제어하기 (0) | 2026.01.11 |
| [JUnit] @AfterAll – 전체 테스트 종료 후 한 번만 실행되는 작업 (0) | 2026.01.10 |
| [JUnit] @BeforeAll – 테스트 시작 전 한 번만 수행되는 작업 (0) | 2026.01.10 |
Comments
