Test Fixture 활용
- Test Fixture를 사용하지 않고 UUID를 매번 랜덤으로 생성하면, 테스트 실행마다 서로 다른 데이터가 만들어져 동일한 테스트라도 결과를 재현하기 어려워진다.
- 이는 테스트 실패 시 원인 분석을 어렵게 만들고, 테스트 신뢰도를 떨어뜨린다.
- Test Fixture를 통해 고정된 UUID를 사용하면, 테스트 데이터가 항상 동일한 상태로 구성되어 테스트 실패 시 원인을 명확히 추적할 수 있고 안정적인 테스트를 보장할 수 있다.
StockServiceImplTest.java
💡수정 전
// 테스트 전 상품 재고 입력
@BeforeEach
public void setUp() {
// 테스트용 고정 ID 생성 (각 테스트마다 새로 생성)
testProductId = UUID.randomUUID(); // 테스트 fixture
testCompanyId = UUID.randomUUID();
testHubId = UUID.randomUUID();
Stock stock = Stock.create(
testProductId,
testCompanyId,
testHubId,
100
);
jpaStockRepository.saveAndFlush(stock);
}
- 매 테스트 실행마다 서로 다른 UUID가 생성됨
- 테스트 실패 시, 어떤 ID로 실패했는지 로그만 보고 추적하기 어려움
- 특정 ID를 기준으로 디버깅하거나 재현하기 어려움
💡리팩토링
- 테스트 전용 Fixture 사용
public class StockFixture {
public static Stock createDefaultStock() {
return Stock.create(
UUID.fromString("00000000-0000-0000-0000-000000000001"),
UUID.fromString("00000000-0000-0000-0000-000000000002"),
UUID.fromString("00000000-0000-0000-0000-000000000003"),
100
);
}
}
- 테스트 코드에서는 아래와 같이 활용할 수 있다.
@BeforeEach
void setUp() {
jpaStockRepository.saveAndFlush(StockFixture.createDefaultStock());
}'Projects > HubEleven' 카테고리의 다른 글
| [리팩토링] Swagger Request DTO 메서드 충돌 트러블슈팅 (0) | 2026.01.06 |
|---|---|
| [동시성 처리] 테스트 코드 런타임 에러 발생 (업데이트 중..) (0) | 2026.01.05 |
| [리팩토링] Stock 도메인 리팩토링 (2) (0) | 2025.12.27 |
| [리팩토링] Stock 도메인 리팩토링 (1) (0) | 2025.12.18 |
| [리팩토링] 서비스 코드 주석 제거, 메서드명 변경 (0) | 2025.12.17 |