Skip to content

[Feat] AI 기반 테스트 자동 생성 오케스트레이터 구축#63

Merged
Yeobi00 merged 10 commits into
mainfrom
feat/auto-test
Apr 24, 2026
Merged

[Feat] AI 기반 테스트 자동 생성 오케스트레이터 구축#63
Yeobi00 merged 10 commits into
mainfrom
feat/auto-test

Conversation

@Yeobi00
Copy link
Copy Markdown
Contributor

@Yeobi00 Yeobi00 commented Apr 24, 2026

#️⃣ Issue Number

📝 요약(Summary)

🛠️ PR 유형

어떤 변경 사항이 있나요?

  • 새로운 기능 추가
  • 버그 수정
  • CSS 등 사용자 UI 디자인 변경
  • 코드에 영향을 주지 않는 변경사항(오타 수정, 탭 사이즈 변경, 변수명 변경)
  • 코드 리팩토링
  • 주석 추가 및 수정
  • 문서 수정
  • 테스트 추가, 테스트 리팩토링
  • 빌드 부분 혹은 패키지 매니저 수정
  • 파일 혹은 폴더명 수정
  • 파일 혹은 폴더 삭제

📸스크린샷 (선택)

💬 공유사항 to 리뷰어

✅ PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요.

  • 커밋 메시지 컨벤션에 맞게 작성했습니다.
  • 변경 사항에 대한 테스트를 했습니다.(버그 수정/기능에 대한 테스트).

@github-actions
Copy link
Copy Markdown

코드 리뷰 결과

개요

AI 기반 테스트 자동 생성 오케스트레이터 구축 PR입니다. CI 워크플로우 설정, 테스트 환경 구성(application-test.yml, H2 의존성), AI 테스트 생성 셸 스크립트(scripts/ai-test.sh), 그리고 TripConverter 단위 테스트(15개) 추가가 주요 변경사항입니다.


🔴 심각 — CI 워크플로우 버그

파일: .github/workflows/claude-code-review.yml

interactive 잡의 claude_args가 빈 값으로 설정되어 있습니다.

# 변경 후 (버그)
claude_args: |
\ No newline at end of file

| 블록 스칼라에 내용이 없고 파일 끝 개행도 없어 YAML 파싱 오류 또는 빈 문자열이 됩니다. 기존에 있던 --max-turns 5가 사라졌습니다. 다음과 같이 복구해야 합니다:

claude_args: "--max-turns 5"

🔴 심각 — 보안: --dangerously-skip-permissions

파일: .github/workflows/claude-code-review.yml, 라인 11

claude_args: |
  --max-turns 15
  --dangerously-skip-permissions

--dangerously-skip-permissions는 Claude Code의 권한 확인을 전부 건너뜁니다. CI 환경에서는 CLAUDE_CODE_OAUTH_TOKEN, GitHub 토큰, 리포지토리 쓰기 권한이 모두 노출된 상태이므로, 악의적인 PR 내용이 이 플래그를 통해 임의 명령을 실행할 수 있는 공격 면이 생깁니다.

권고: --dangerously-skip-permissions 제거 후, 필요한 개별 권한을 명시적으로 허용하는 방식으로 교체하세요.


🟡 주의 — 테스트 파일 경로와 패키지 선언 불일치

파일: src/test/java/graduation/project/dodutch_server/domain/trip/converter/TripConverterTest.java
파일: src/test/java/graduation/project/dodutch_server/DoDutchServerApplicationTests.java

두 파일 모두 디렉터리 경로dodutch_server(소문자)이지만 패키지 선언DoDutch_server(대문자)입니다.

// 파일 경로:  .../dodutch_server/...
// 패키지 선언:
package graduation.project.DoDutch_server.domain.trip.converter;

CLAUDE.md에서도 이 문제를 명시적으로 경고하고 있습니다:

"테스트 패키지는 반드시 graduation.project.DoDutch_server로 작성 (대문자 D 주의)"
"테스트 파일 생성 후 package 선언이 디렉토리 경로와 정확히 일치하는지 확인"

Linux(CI)는 case-sensitive 파일시스템이므로, dodutch_serverDoDutch_server는 다른 디렉터리입니다. Gradle이 파일을 찾더라도 컴파일된 클래스의 FQN이 디렉터리 구조와 불일치하여 IDE 지원 및 일부 빌드 도구에서 문제가 발생할 수 있습니다.

권고: 파일을 src/test/java/graduation/project/DoDutch_server/ 경로로 이동하거나, 패키지 선언을 디렉터리에 맞게 dodutch_server로 통일하세요.


🟡 주의 — DoDutchServerApplicationTests@ActiveProfiles("test") 누락 가능성

파일: src/test/java/graduation/project/dodutch_server/DoDutchServerApplicationTests.java

이 PR에서 해당 파일의 패키지명만 변경되었는데, @SpringBootTest를 사용하는 이 클래스에 @ActiveProfiles("test")가 추가되었는지 확인이 필요합니다. CLAUDE.md 규칙:

"모든 @SpringBootTest 클래스는 반드시 @ActiveProfiles("test") 추가"

신규 application-test.yml이 활성화되지 않으면 환경변수 누락으로 컨텍스트 로딩에 실패합니다.


✅ 양호한 사항

  • TripConverterTest: 15개 테스트 케이스가 Given-When-Then 구조를 잘 따르며 탈퇴 멤버(null member) 처리, 빈 리스트 경계값 등 엣지 케이스를 충실히 커버합니다.
  • application-test.yml: H2 + MYSQL 호환 모드, 외부 API 더미 설정이 잘 구성되어 있습니다.
  • scripts/ai-test.sh: set -euo pipefail, 도구 allowlist(ALLOWED_TOOLS_PLAN, ALLOWED_TOOLS_TEST), 예산 제한 등 안전 장치가 적절히 적용되어 있습니다.
  • build.gradleaiTest 태스크: Gradle 데몬의 stdin 제한 경고를 doFirst로 안내하는 점이 좋습니다.

요약: CI 워크플로우의 빈 claude_args 버그와 --dangerously-skip-permissions 보안 설정은 머지 전 반드시 수정이 필요합니다. 테스트 파일 경로/패키지 불일치도 CI 환경에서 예기치 않은 문제를 유발할 수 있어 함께 수정을 권장합니다.

🤖 Reviewed by Claude Sonnet 4.6

@Yeobi00 Yeobi00 merged commit 1c13797 into main Apr 24, 2026
2 checks passed
@Yeobi00 Yeobi00 changed the title AI 기반 테스트 자동 생성 오케스트레이터 구축 [Feat] AI 기반 테스트 자동 생성 오케스트레이터 구축 Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant