1.8 KiB
1.8 KiB
테스트 스타일
테스트 스타일 규칙
- 테스트 프레임워크: JUnit 5 (
useJUnitPlatform()) - 신규 기능, 버그 수정, 리팩터링, 동작 변경은 TDD를 기본 프로세스로 따른다.
- TDD 순서는 RED(실패 테스트 작성) → 실패 확인 → GREEN(최소 구현) → 통과 확인 → REFACTOR(정리) → 회귀 확인 순서로 진행한다.
- 실패 테스트는 실제 구현 결함 또는 미구현 동작 때문에 실패해야 하며, 오타/설정 오류/테스트 데이터 오류 때문에 실패한 상태로 RED를 통과한 것으로 보지 않는다.
- 테스트 작성이 현실적으로 불가능한 작업은 계획 문서에 이유와 대체 검증 방법을 명시한다.
- 도메인 모델과 엔티티는 유닛 테스트로 작성한다.
- 서비스와 컨트롤러는 통합 테스트(
@SpringBootTest)로 작성한다. - 목킹은 정말 필요한 경우가 아니면 사용하지 않는다.
- 검증:
assertEquals,assertThrows패턴 준수. - 테스트 이름은 의도가 드러나는 영어 문장형(
should...)을 유지한다. - 테스트는 DisplayName으로 한국어 설명을 추가한다.
- 예외 상황이 있는지 확인하고 예외 상황에 대한 테스트 케이스를 추가한다.
Redis 테스트 격리 규칙
- embedded Redis는 모든 테스트에 전역 등록하지 않는다.
src/test/resources/META-INF/spring.factories로EmbeddedRedisInitializer를 등록하면 Redis가 필요 없는@DataJpaTest까지 Redis를 시작하므로 금지한다. - Redis가 필요한 통합 테스트만
@ContextConfiguration(initializers = [EmbeddedRedisInitializer::class])로 명시적으로 opt-in 한다. - Redis가 필요 없는 JPA/QueryDSL 슬라이스 테스트는 기존 관례처럼
@DataJpaTest(properties = ["spring.cache.type=none"])로 캐시를 끈다.