docs(agent): 테스트 범위를 로직으로 제한한다

This commit is contained in:
2026-08-04 11:44:58 +09:00
parent f50f987282
commit d20d6aa971
5 changed files with 16 additions and 16 deletions

View File

@@ -34,13 +34,14 @@
./gradlew :app:test
./gradlew :app:testDebugUnitTest
./gradlew :app:testReleaseUnitTest
./gradlew :app:connectedDebugAndroidTest
```
주의:
- `:app:connectedDebugAndroidTest`는 기기/에뮬레이터 연결이 필요하다.
- 기본 자동 검증은 `app/src/test`의 로직/local unit test만 사용한다.
- 사용자가 명시적으로 요청하지 않으면 `app/src/androidTest` UI/계측 테스트를 작성하거나 `:app:connectedDebugAndroidTest`를 실행하지 않는다.
- 사용자가 명시적으로 요청하지 않으면 기기·에뮬레이터 UI 조작, 스크린샷 캡처, 시각 QA를 검증 계획이나 완료 증거에 포함하지 않는다.
- UI 변경은 adapter 분기, mapper, formatter, presentation model, 라우팅 등 화면 표현을 결정하는 로직만 테스트한다. View 크기·margin·padding·constraint·visibility 같은 레이아웃 속성 테스트는 작성하지 않는다.
- `app/build.gradle``lint { checkReleaseBuilds false }`가 있어 릴리스 린트는 `:app:lintRelease`를 명시 실행해야 한다.
- 현재 `app/src/androidTest`에는 테스트 소스가 없으므로 계측 테스트 명령은 신규 테스트 추가 시 사용한다.
### 1) 단일 테스트 실행 (중요)
로컬 단위 테스트(`app/src/test`)는 `--tests` 필터를 사용한다.
@@ -144,14 +145,6 @@ Chat Action Phase 테스트 예시:
- 한글 테스트명을 `--tests`로 실행할 때도 클래스명과 메서드명을 포함한 전체 문자열을 따옴표로 감싼다.
- 메서드 매칭이 불안정하면 클래스 단위로 먼저 실행한다.
### 2) 계측 테스트 클래스/메서드 타깃 실행
Gradle 인자 방식:
```bash
./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=kr.co.vividnext.sodalive.SomeInstrumentedTest
./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=kr.co.vividnext.sodalive.SomeInstrumentedTest#someMethod
```
ADB 대안:
```bash
adb shell am instrument -w -e class kr.co.vividnext.sodalive.SomeInstrumentedTest#someMethod <test_package>/<runner>
```
### 2) UI/계측 테스트 예외
- UI/계측 테스트가 반드시 필요한 경우에도 사용자의 명시 요청을 먼저 확인한다.
- 승인된 작업에서만 해당 Task의 계획 문서에 대상, 실행 명령, 종료 조건과 정리 절차를 기록하고 실행한다.

View File

@@ -41,6 +41,7 @@
- 테스트 추가 시 단일 실행 명령 예시도 `docs/agent-guides/build-test-style.md`에 갱신한다.
- 신규 테스트는 로직에 대한 테스트 코드만 작성한다. View 크기, margin, padding, constraint, visibility 같은 UI 레이아웃/표현 속성 검증 테스트는 작성하지 않는다.
- UI 작업에서 테스트가 필요하면 adapter view type 선택, rank 구간 분류, mapper, formatter, presentation model, visibility를 결정하는 순수 로직처럼 화면 표현을 결정하는 입력/출력 계약만 검증한다.
- 사용자가 명시적으로 요청하지 않으면 `app/src/androidTest` UI/계측 테스트를 추가하거나 기기·에뮬레이터 UI 조작, 스크린샷·시각 QA를 실행하지 않는다.
### 6) 주석
- 의미 단위별로 주석을 작성한다.

View File

@@ -5,7 +5,7 @@
## 작업 절차 체크리스트
- 변경 전: 유사 기능 코드를 먼저 찾아 네이밍/예외/응답 패턴을 맞춘다.
- 변경 중: 공개 API 스키마를 임의 변경하지 말고 작은 단위로 안전하게 수정한다.
- 변경 후: 최소 단일 테스트(`--tests`) 또는 `./gradlew :app:test`를 실행하고 필요 시 `./gradlew :app:ktlintCheck`를 수행한다.
- 변경 후: `app/src/test`의 최소 로직 단일 테스트(`--tests`) 또는 `./gradlew :app:test`를 실행하고 필요 시 `./gradlew :app:ktlintCheck`를 수행한다.
## 작업 계획 문서 규칙 (docs)
- 모든 구현 작업은 PRD 문서와 구현 계획/TASK 문서가 모두 준비된 뒤에 시작한다.
@@ -38,8 +38,10 @@
- 각 Task 또는 Phase Gate에는 독립적으로 실행·판정할 수 있는 목표, 시작 조건, 완료 증거, 범위 밖 항목을 명시한다.
- 각 Task에는 구현 시 생성·수정·확인할 파일 경로와 필요한 인터페이스를 명시한다.
- 구현 Task의 실행 단계는 `RED → RED 확인 → GREEN → GREEN 확인 → REFACTOR` 순서의 체크박스로 작성하고 완료 즉시 `- [x]`로 갱신한다.
- 테스트 계획은 `app/src/test`의 로직/local unit test로 한정한다. 사용자가 명시적으로 요청하지 않으면 `app/src/androidTest`, `connectedDebugAndroidTest`, 기기·에뮬레이터 UI 조작, 스크린샷·시각 QA를 Task·Gate·완료 증거에 포함하지 않는다.
- UI 변경의 자동 테스트는 adapter 분기, mapper, formatter, presentation model, 라우팅 같은 입력/출력 로직만 대상으로 하며 레이아웃 속성을 직접 검증하지 않는다.
- 테스트 작성이 현실적으로 불가능한 read-only 리뷰·문서·외부 확인 Task에는 `TDD 예외 사유`와 실행 명령·대조표·수동 확인을 포함한 `대체 검증 방법`을 명시한다.
- 각 Phase 또는 Task에는 실행 명령, 기대 결과, 수동 확인 항목 등 검증 기준을 함께 작성한다.
- 각 Phase 또는 Task에는 실행 명령 기대 결과 등 검증 기준을 함께 작성한다. 수동 확인은 사용자가 명시적으로 요청한 경우에만 포함한다.
- 작업 도중 범위가 변경되면 계획 문서 체크리스트를 먼저 업데이트한 뒤 구현한다.
- 실제 실행 결과는 샘플의 `Progress` 형식에 맞춰 무엇을/왜/어떻게 수행했는지와 남은 항목을 한국어로 누적한다.
- 특정 phase 또는 task에 직접 대응되는 검증 기록(무엇/왜/어떻게, 실행 명령, 결과)은 해당 phase 또는 task 아래에 `검증 기록`으로 한국어로 남긴다.