| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- ArrayList
- 자바문법
- java테스트
- 이클립스
- 정규식
- Array
- string
- IntelliJ
- input
- CSS
- math
- html
- 단위테스트
- Java
- 인텔리제이
- 문자열
- 배열
- junit
- Eclipse
- 자바스크립트
- json
- vscode
- js
- javascript
- HashMap
- junit5
- Visual Studio Code
- list
- 테스트자동화
- 자바
- Today
- Total
어제 오늘 내일
[JUnit] getName() – 테스트 이름 가져오기 본문
JUnit에서 테스트 실행 중 테스트 메소드의 이름을 확인해야 하는 경우가 종종 있습니다.
특히 JUnit3 스타일에서는 테스트 인스턴스가 스스로 자신의 이름을 알고 있어야 했기 때문에
getName() 메소드는 매우 중요한 역할을 했습니다.
이 글에서는 getName()의 역할, 동작 방식, 사용 예제를 중심으로 초보자도 이해하기 쉽게 정리합니다.
1. getName()이란?
getName()은 현재 실행 중인 테스트 메소드의 이름을 문자열로 반환하는 메소드입니다.
JUnit3 기반의 TestCase가 제공하며, 테스트 로그 작성이나 디버깅에 유용했습니다.
JUnit4부터는 @Test 기반으로 메소드명을 직접 관리하기 때문에 getName() 사용 빈도가 줄었고,
JUnit5에서는 공식적으로 제공되지 않으며 확장 모델에서 별도로 접근해야 합니다.
하지만 레거시 코드나 테스트 프레임워크 확장 작업에서는 여전히 쓰이기 때문에 알고 있어야 합니다.
2. JUnit3에서 getName() 사용 예제
JUnit3의 테스트 클래스는 TestCase를 상속받았고, 테스트 메소드는 이름 기반으로 실행되었습니다.
예제 코드
import junit.framework.TestCase;
public class MyTest extends TestCase {
public MyTest(String name) {
super(name);
}
public void testAdd() {
System.out.println("실행 중인 테스트: " + getName());
assertEquals(5, 2 + 3);
}
}
실행 결과 예시
실행 중인 테스트: testAdd
구조 설명
- 생성자로 전달된 테스트 이름이 TestCase 내부 필드로 저장됨
- getName() 호출 시 이 값을 반환
- 테스트 스위트나 TestRunner가 테스트 메소드 이름을 자동으로 설정해줌
즉, JUnit3에서 테스트 메소드명이 식별자 역할을 했기 때문에
getName()은 테스트 흐름에서 중요한 정보였습니다.
3. JUnit4에서는?
JUnit4부터는 테스트 이름이 리플렉션 기반으로 메소드 이름에서 자동으로 결정되므로
getName() 메소드가 기본적으로 제공되지 않습니다.
대신 다음 방식으로 이름을 확인할 수 있습니다.
방법 1) Description 객체 활용 (Runner 내부)
@Rule
public TestName testName = new TestName();
@Test
public void testMethod() {
System.out.println("테스트 이름: " + testName.getMethodName());
}
출력 예:
테스트 이름: testMethod
JUnit4에서는 TestName 룰이 사실상 getName() 대체 기능입니다.
4. JUnit5에서는?
JUnit5는 확장 기반 구조이므로 “현재 실행 중인 테스트 이름”을 직접 얻기 위해
TestInfo를 사용합니다.
예제
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
class MyTest {
@Test
void testSomething(TestInfo testInfo) {
System.out.println("테스트 이름: " + testInfo.getDisplayName());
}
}
실행 결과:
테스트 이름: testSomething()
JUnit5에서는 getName()이라는 이름은 사라졌지만,
TestInfo.getDisplayName()이 역할을 담당한다고 볼 수 있습니다.
5. getName() 사용 시 주의할 점
- JUnit3 전용 기능
- TestCase 기반 구조에서만 사용됨
- JUnit4/5에서는 대체 기능 사용 필요
- 테스트 이름 = 메소드 이름이라는 규칙에 의존
- testXXX 네이밍 규칙을 준수해야 의미가 있었음
- JUnit5에서는 DisplayName이 이름을 바꿀 수 있음
- 예: @DisplayName("사용자 등록 테스트")
- 표시되는 이름이 메소드명과 다를 수 있으므로 주의
- 테스트 실행 분석 또는 커스텀 로그 작성 시 유용
- 어떤 테스트가 수행 중인지 정확히 로그로 남길 수 있음
6. 정리
- getName()은 JUnit3 TestCase에서 테스트 메소드 이름을 얻는 기능
- JUnit4에서는 TestName 룰로 대체
- JUnit5에서는 TestInfo의 getDisplayName()으로 해당 역할 수행
- 현대 JUnit에서는 직접 사용 빈도는 줄었지만, 레거시 테스트 유지보수에 필수 개념
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] Assumptions로 조건부 테스트 실행하는 방법 (0) | 2026.01.15 |
|---|---|
| [JUnit] setName() – 테스트 이름 변경하기 (0) | 2026.01.14 |
| [JUnit] TestRunner 동작 – 내부 구조 이해하기 (0) | 2026.01.13 |
| [JUnit] TestResult 활용 – 실행 결과와 실패 정보 확인하기 (0) | 2026.01.13 |
| [JUnit] run() 메소드 – 테스트 실행 흐름 따라가기 (0) | 2026.01.12 |
