21 lines
1.8 KiB
Markdown
21 lines
1.8 KiB
Markdown
# 테스트 스타일
|
|
|
|
## 테스트 스타일 규칙
|
|
- 테스트 프레임워크: 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"])`로 캐시를 끈다.
|