Files
sodalive-backend-spring-boot/docs/agent-guides/테스트스타일.md

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.factoriesEmbeddedRedisInitializer를 등록하면 Redis가 필요 없는 @DataJpaTest까지 Redis를 시작하므로 금지한다.
  • Redis가 필요한 통합 테스트만 @ContextConfiguration(initializers = [EmbeddedRedisInitializer::class])로 명시적으로 opt-in 한다.
  • Redis가 필요 없는 JPA/QueryDSL 슬라이스 테스트는 기존 관례처럼 @DataJpaTest(properties = ["spring.cache.type=none"])로 캐시를 끈다.