بنقرة واحدة
write-tests
프로덕션 코드(src/main/java/) 작성 또는 수정 후 테스트 코드를 작성한다. 새로운 클래스나 메서드를 구현했을 때, 테스트가 없는 코드를 작성했을 때 사용한다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
프로덕션 코드(src/main/java/) 작성 또는 수정 후 테스트 코드를 작성한다. 새로운 클래스나 메서드를 구현했을 때, 테스트가 없는 코드를 작성했을 때 사용한다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
변경된 파일을 기능 단위로 그룹화하고, 각 그룹의 관련 테스트를 실행한 후 순서대로 커밋한다.
장애·인시던트·반복된 오진의 사후 회고(Postmortem)를 작성한다. 프로덕션 장애, CI 플레이키, 배포 사고, 진단이 여러 번 빗나간 사건 등 "무엇이 어떻게 터졌고 왜 그렇게 진단했는가"를 복기할 때 사용한다.
PR 템플릿을 읽어 GitHub Pull Request를 생성한다. 백엔드·프론트엔드 공통.
PR의 CI 실패 테스트를 자동으로 감지하고 수정 사이클을 진행한다. 수정 완료 후 /commit을 호출한다.
Architecture Decision Record를 작성한다. 기술 선택, 설계 결정, 패턴 도입 등 팀이 내린 중요한 기술적 의사결정을 기록할 때 사용한다.
GitHub 이슈를 템플릿 기반으로 생성하고, 이슈 번호로 dev에서 작업 브랜치를 체크아웃한다. 백엔드·프론트엔드 공통.
| name | write-tests |
| description | 프로덕션 코드(src/main/java/) 작성 또는 수정 후 테스트 코드를 작성한다. 새로운 클래스나 메서드를 구현했을 때, 테스트가 없는 코드를 작성했을 때 사용한다. |
| allowed-tools | Read, Glob, Grep, Write, Edit |
방금 작성하거나 수정한 프로덕션 코드에 대한 테스트를 작성한다.
src/test/java/ 하위 동일 패키지에 테스트 파일을 생성한다 (멀티모듈 — 경로는 <module>/src/test/java/coffeeshout/...)docs/conventions-test.md의 컨벤션을 따른다{Module}ServiceTest, 통합 테스트는 {Module}IntegrationTest(각각 coffeeshout.support.ServiceTest / IntegrationTestSupport 확장). 이 상속이 TestContainers(MySQL·Valkey)와 test 프로파일을 자동 구동한다 — 빠뜨리면 컨테이너가 안 떠 테스트가 깨진다 (ADR-0015). @IntegrationTest 같은 애노테이션은 없다(베이스 상속이다)MOCK(@WebMvcTest 금지), WebSocket은 WebSocketIntegrationTestSupport 상속 + RANDOM_PORT (ADR-0017)src/testFixtures/java/coffeeshout/fixture/, 모듈 내부 전용은 src/test/java/coffeeshout/fixture/. 유형 구분: *Fixture(팩토리)·*Fake·*Dummy·Stub*·TestDataHelper(@Component DB헬퍼) (ADR-0016)@Nested로 시나리오를 그룹화한다SoftAssertions를 사용한다테스트 작성 전에 다음 항목을 먼저 검토한다. 해당 항목이 발견되면 테스트 코드 작성 전에 사용자에게 프로덕션 코드 변경을 먼저 제안한다.
| 징후 | 문제 | 제안 방향 |
|---|---|---|
비즈니스 로직 메서드에서 Instant.now(), Math.random() 등을 직접 호출 | 테스트에서 결과를 제어할 수 없음 | 파라미터로 주입받도록 변경. 단, 도메인 이벤트·값 객체의 팩토리성 생성자(eventId, timestamp 자동 생성 등)는 이 프로젝트의 허용 패턴이므로 제외한다 |
new 구체클래스()를 메서드 내부에서 직접 생성 | 의존성 교체가 불가능 | 생성자 주입 또는 팩토리 파라미터로 변경 |
| 하나의 메서드가 여러 추상화 수준의 일을 동시에 처리 | 단위 테스트 범위가 불명확 | 메서드 분리 후 각각 테스트 |
| void 메서드가 상태 변경 외에 아무것도 반환하지 않음 | 결과 검증 불가 | 변경 결과를 반환하도록 수정 |
static 메서드에 외부 의존성이 숨어 있음 | 모킹 불가 | 인스턴스 메서드로 전환 |
변경 제안 시 다음 형식으로 사용자에게 설명한다:
테스트하기 어려운 설계가 발견되었습니다.
[발견된 문제]
- 구체적인 코드 위치와 이유
[제안하는 변경]
- 변경 전 코드
- 변경 후 코드
변경 후 테스트를 작성하겠습니다. 변경을 진행할까요?