# build-test-style `SodaLive` 저장소에서 빌드, 테스트, 린트 관련 세부 규칙을 정리한 문서다. ## 저장소 범위 보충 - 추측하지 말고 근거 파일(`settings.gradle`, `build.gradle`, `app/build.gradle`, 소스 코드)을 읽고 결정한다. ## 빌드 / 린트 / 테스트 명령 기본 실행 형태: ```bash ./gradlew ``` 빌드: ```bash ./gradlew clean ./gradlew :app:assembleDebug ./gradlew :app:assembleRelease ./gradlew :app:build ./gradlew :app:check ``` 린트/포맷: ```bash ./gradlew :app:lint ./gradlew :app:lintDebug ./gradlew :app:lintRelease ./gradlew :app:ktlintCheck ./gradlew :app:ktlintFormat ``` 테스트: ```bash ./gradlew :app:test ./gradlew :app:testDebugUnitTest ./gradlew :app:testReleaseUnitTest ./gradlew :app:connectedDebugAndroidTest ``` 주의: - `:app:connectedDebugAndroidTest`는 기기/에뮬레이터 연결이 필요하다. - `app/build.gradle`에 `lint { checkReleaseBuilds false }`가 있어 릴리스 린트는 `:app:lintRelease`를 명시 실행해야 한다. - 현재 `app/src/androidTest`에는 테스트 소스가 없으므로 계측 테스트 명령은 신규 테스트 추가 시 사용한다. ### 1) 단일 테스트 실행 (중요) 로컬 단위 테스트(`app/src/test`)는 `--tests` 필터를 사용한다. 클래스 단위: ```bash ./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.chat.talk.room.ChatRepositoryTest" ``` 메서드 단위: ```bash ./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.chat.talk.room.ChatRepositoryTest.enterChatRoom inserts messages and returns response" ``` 패턴 매칭 예시: ```bash ./gradlew :app:testDebugUnitTest --tests "*TimeUtilsTest*" ``` 참고: - Kotlin backtick 테스트명은 공백이 포함될 수 있으므로 전체 문자열을 인용한다. - 메서드 매칭이 불안정하면 클래스 단위로 먼저 실행한다. ### 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 / ```