반응형
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
- input
- js
- ArrayList
- junit
- Java
- vscode
- 문자열
- Eclipse
- json
- 정규식
- math
- Visual Studio Code
- 테스트자동화
- list
- 인텔리제이
- HashMap
- 이클립스
- 자바스크립트
- 자바문법
- javascript
- html
- junit5
- 단위테스트
- string
- 배열
- java테스트
- 자바
- IntelliJ
- Array
- CSS
Archives
- Today
- Total
어제 오늘 내일
[JUnit] setName() – 테스트 이름 변경하기 본문
JUnit3 기반의 테스트 구조에서는 테스트 메소드 이름이 테스트 식별자의 핵심 역할을 했습니다.
따라서 테스트 실행 중 이름을 변경하거나, 특정 조건에 따라 동적으로 이름을 바꾸고 싶을 때 사용하는 메소드가 setName()입니다.
JUnit4 이후로는 거의 사용되지 않는 레거시 기능이지만,
레거시 테스트 유지보수 시 반드시 알아야 하는 개념입니다.
1. setName()이란?
setName()은 현재 테스트 인스턴스에 저장된 테스트 이름을 변경하는 메소드입니다.
JUnit3의 TestCase에서 제공되며, 생성자 또는 테스트 실행 흐름 중에 호출할 수 있습니다.
특징
- 테스트 실행 중 이름을 동적으로 수정 가능
- 스위트 구성 시 테스트 이름 변경에 활용됨
- 로그, 테스트 보고서 커스터마이징에 사용
2. JUnit3에서 setName() 기본 사용 예제
JUnit3에서는 테스트 클래스가 TestCase를 상속받고 있으며
각 테스트는 “이름을 가진 인스턴스”로 관리됩니다.
예제 코드
import junit.framework.TestCase;
public class RenameTest extends TestCase {
public RenameTest(String name) {
super(name);
}
public void testOriginalName() {
System.out.println("변경 전 테스트 이름: " + getName());
setName("testChangedName");
System.out.println("변경 후 테스트 이름: " + getName());
assertEquals(5, 2 + 3);
}
}
실행 결과
변경 전 테스트 이름: testOriginalName
변경 후 테스트 이름: testChangedName
설명
- 생성자로 받은 테스트 이름이 초기 값
- setName()을 호출하여 테스트 이름을 변경
- 변경된 이름은 TestResult에도 그대로 기록됨
3. 테스트 스위트 구성 시 이름 변경하기
여러 테스트 클래스를 하나의 스위트로 구성할 때
테스트 이름을 보기 좋게 바꿀 수 있습니다.
예제
import junit.framework.*;
public class MySuite {
public static Test suite() {
TestSuite suite = new TestSuite();
TestCase test = new MyTest("testAdd");
test.setName("Addition Test"); // 이름 변경
suite.addTest(test);
return suite;
}
}
사용 의도
- 보고서나 콘솔 출력에서 의미 있는 이름으로 표시
- 테스트 시나리오 기반 실행을 할 때 가독성 향상
4. JUnit4 이후에는 어떻게 될까?
JUnit4부터는 테스트 메소드가 리플렉션 기반으로 실행되기 때문에
getName() / setName() 같은 방식이 더 이상 사용되지 않습니다.
대신 다음 방법들이 존재합니다.
JUnit4: @Rule TestName
@Rule
public TestName name = new TestName();
@Test
public void testMethod() {
System.out.println(name.getMethodName());
}
→ 테스트 이름 변경은 불가능함 (반드시 메소드명 기반)
JUnit5: TestInfo 사용
@Test
void test(TestInfo info) {
System.out.println(info.getDisplayName());
}
JUnit5에서도 테스트 이름 변경 기능은 기본 제공하지 않습니다.
대신 @DisplayName을 통해 사용자 친화적인 이름을 부여할 수 있습니다.
@DisplayName("사용자 등록 테스트")
@Test
void createUser() { }
5. setName() 사용 시 주의할 점
- JUnit3 전용 기능
- JUnit4, JUnit5에서는 사용할 수 없음
- 레거시 코드 유지보수용으로만 필요
- 이름 변경 시 테스트 보고서 가독성에 영향
- 변경된 이름은 TestResult / Failure 로그에도 반영됨
- 잘못 사용하면 디버깅 시 혼란 발생 가능
- 테스트 이름 변경은 신중하게 사용
- 테스트 식별자가 바뀌기 때문에 자동화 도구와의 연동에 영향 줄 수 있음
- JUnit5에서는 @DisplayName을 사용하는 것이 더 안전
- 실행 이름은 메소드명 그대로 유지
- 표시되는 이름만 바꾸기 때문에 혼란 없음
6. 정리
- setName()은 JUnit3의 TestCase 기반에서 테스트 이름을 변경하는 메소드
- 동적으로 테스트 이름을 바꾸거나 스위트 구성 시 유용
- JUnit4/5에서는 사용되지 않으며, @DisplayName이 그 역할을 대체
- 레거시 환경에서만 등장하는 개념이지만, 유지보수 시 반드시 알아야 함
반응형
'IT > JUnit' 카테고리의 다른 글
| [JUnit5] TestInfo로 테스트 메타데이터 활용하기 (0) | 2026.01.15 |
|---|---|
| [JUnit5] Assumptions로 조건부 테스트 실행하는 방법 (0) | 2026.01.15 |
| [JUnit] getName() – 테스트 이름 가져오기 (0) | 2026.01.14 |
| [JUnit] TestRunner 동작 – 내부 구조 이해하기 (0) | 2026.01.13 |
| [JUnit] TestResult 활용 – 실행 결과와 실패 정보 확인하기 (0) | 2026.01.13 |
Comments
