AgentSkillsCN

test

在代码库中采用TDD模式设计、编写并检查单元测试与集成测试时使用。提供测试分类、位置、失败条件,以及最小化实现与重构顺序等方面的指导。

SKILL.md
--- frontmatter
name: test
description: 코드베이스에서 TDD 방식으로 단위/통합 테스트를 설계·작성·점검할 때 사용한다. 테스트 분류, 위치, 실패 조건, 최소 구현/리팩터링 순서를 안내한다.

TDD 점검

Language

모든 응답은 한국어로 작성한다.

목적

  • TDD 흐름(실패 테스트 → 최소 구현 → 리팩터링)을 강제한다.
  • 단위테스트와 통합테스트의 범위를 분리하고, 코드베이스 패턴을 따른다.

빠른 절차

  1. 변경 범위 식별
  • 어떤 모듈/유스케이스/어댑터가 바뀌는지 명확히 한다.
  1. 테스트 유형 결정
  • 순수 비즈니스 로직/유틸/정책 검증이면 단위테스트.
  • Spring 컨텍스트, DB/JPA, MQ/Testcontainers 필요하면 통합테스트.
  1. 실패 테스트 먼저 작성
  • 기대 결과와 실패 조건을 먼저 고정한다.
  • 테스트가 실패하는 것을 확인한다.
  1. 최소 구현
  • 테스트를 통과시키는 최소 변경만 한다.
  1. 리팩터링
  • 중복 제거, 네이밍 정리, 구조 개선.
  • 테스트는 계속 통과해야 한다.
  1. 점검
  • 단위/통합 테스트 위치와 의존이 올바른지 확인한다.

코드베이스 관찰 패턴

단위테스트 패턴

  • 위치: src/test/java.
  • Spring 없이 직접 인스턴스 생성, fake/record로 의존 대체.
  • 예외/에러 케이스 중심의 AAA 구조.
  • JUnit Jupiter + AssertJ/Assertions 사용.

통합테스트 패턴

  • 위치: src/integrationTest/java.
  • DB/JPA 통합은 @DataJpaTest 기반.
  • 기능의 full life cycle을 점검할때는 @SpringBootTest + Testcontainers 사용.

분류 원칙

  • 단위테스트에 Spring 컨텍스트 로딩 금지.
  • 통합테스트는 실제 인프라 또는 Spring 설정 검증에만 사용.
  • 단위 성격 테스트를 integrationTest에 두지 않는다.

단위테스트 체크리스트

  • 테스트 대상은 순수 로직이며 외부 인프라 의존이 없다.
  • 의존성은 fake/record로 대체한다.(mockito 자제)
  • 실패 조건과 예외 메시지를 명확히 검증한다.
  • 테스트는 빠르고 독립적이다.

통합테스트 체크리스트

  • Spring 컨텍스트/DB/MQ 연동이 실제로 필요하다.
  • 테스트는 최소 시나리오만 검증한다.
  • Testcontainers 사용 시 컨테이너 설정이 명확하다.
  • 실행 시간이 길어지는 테스트는 최소화한다.

산출물 템플릿

  • 테스트 계획:
    • 단위테스트: <대상/검증 포인트>
    • 통합테스트: <대상/검증 포인트>
  • 실패 조건:
    • <실패 케이스 목록>
  • 구현 단계:
      1. 실패 테스트 작성
      1. 최소 구현
      1. 리팩터링
  • 확인:
    • <실행할 테스트/태스크>

비고

  • 테스트 파일 위치를 엄격히 구분한다.
  • 필요 이상으로 통합테스트를 늘리지 않는다.
  • 가능한 test context를 최소화한다.