allra-test-writinglisted
Install: claude install-skill aiskillstore/marketplace
# Allra Test Writing Standards
Allra 백엔드 팀의 테스트 작성 표준을 정의합니다. 테스트 헬퍼 선택, Fixture Monkey 데이터 생성, Given-When-Then 패턴, AssertJ 검증을 포함합니다.
## 프로젝트 기본 정보
이 가이드는 다음 환경을 기준으로 작성되었습니다:
- **Java**: 17 이상
- **Spring Boot**: 3.2 이상
- **Testing Framework**: JUnit 5
- **Assertion Library**: AssertJ
- **Mocking**: Mockito
- **Test Data**: Fixture Monkey (선택 사항)
- **Container**: Testcontainers (선택 사항)
**참고**: 프로젝트별로 사용하는 라이브러리나 버전이 다를 수 있습니다. 프로젝트에 맞게 조정하여 사용하세요.
## 테스트 헬퍼 선택 가이드
**주의**: 아래 테스트 헬퍼는 Allra 표준 템플릿에서 제공됩니다. 프로젝트에 이러한 헬퍼가 없는 경우, Spring Boot 기본 테스트 어노테이션(`@SpringBootTest`, `@DataJpaTest`, `@WebMvcTest` 등)을 직접 사용하되, 이 가이드의 테스트 패턴과 원칙은 동일하게 적용합니다.
| 헬퍼 | 태그 | 용도 | 무게 | 언제? |
|------|------|------|------|-------|
| **IntegrationTest** | Integration | 여러 서비스 통합 | 🔴 무거움 | 전체 워크플로우 |
| **RdbTest** | RDB | Repository, QueryDSL | 🟡 중간 | 쿼리 검증 |
| **ControllerTest** | Controller | API 엔드포인트 | 🟢 가벼움 | REST API 검증 |
| **RedisTest** | Redis | Redis 캐싱 | 🟢 가벼움 | 캐시 검증 |
| **MockingUnitTest** | MockingUnit | Service 단위 | 🟢 매우 가벼움 | 비즈니스 로직 |
| **PojoUnitTest** | PojoUnit | 도메인 로직 | 🟢 매우 가벼움 | 순수 자바 |
### 선택 플로우
```
API 엔드포인트? → ControllerTest
여러 서비스 통합? → IntegrationTest
Repository/QueryDSL? → RdbTest
Redis 캐싱? → RedisTest
Service 로직 (Mock)? → MockingUnitTest
도메인 로직 (POJO)? → PojoUnitTest
```
---
## 🎯 Mock vs Integration 선택 기준 (중요!)
**원칙**: 기본은 MockingUnitTest, 꼭 필요할 때만 IntegrationTest
**목표**: IntegrationTest 비율 5% 이하 유지
### 의사결정 플로우차트
```
┌──────────────────────────────