Files
sodalive-android/docs/agent-guides/build-test-style.md

2.4 KiB

build-test-style

SodaLive 저장소에서 빌드, 테스트, 린트 관련 세부 규칙을 정리한 문서다.

저장소 범위 보충

  • 추측하지 말고 근거 파일(settings.gradle, build.gradle, app/build.gradle, 소스 코드)을 읽고 결정한다.

빌드 / 린트 / 테스트 명령

기본 실행 형태:

./gradlew <task>

빌드:

./gradlew clean
./gradlew :app:assembleDebug
./gradlew :app:assembleRelease
./gradlew :app:build
./gradlew :app:check

린트/포맷:

./gradlew :app:lint
./gradlew :app:lintDebug
./gradlew :app:lintRelease
./gradlew :app:ktlintCheck
./gradlew :app:ktlintFormat

테스트:

./gradlew :app:test
./gradlew :app:testDebugUnitTest
./gradlew :app:testReleaseUnitTest
./gradlew :app:connectedDebugAndroidTest

주의:

  • :app:connectedDebugAndroidTest는 기기/에뮬레이터 연결이 필요하다.
  • app/build.gradlelint { checkReleaseBuilds false }가 있어 릴리스 린트는 :app:lintRelease를 명시 실행해야 한다.
  • 현재 app/src/androidTest에는 테스트 소스가 없으므로 계측 테스트 명령은 신규 테스트 추가 시 사용한다.

1) 단일 테스트 실행 (중요)

로컬 단위 테스트(app/src/test)는 --tests 필터를 사용한다.

클래스 단위:

./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.chat.talk.room.ChatRepositoryTest"

메서드 단위:

./gradlew :app:testDebugUnitTest --tests "kr.co.vividnext.sodalive.chat.talk.room.ChatRepositoryTest.enterChatRoom inserts messages and returns response"

패턴 매칭 예시:

./gradlew :app:testDebugUnitTest --tests "*TimeUtilsTest*"

참고:

  • Kotlin backtick 테스트명은 공백이 포함될 수 있으므로 전체 문자열을 인용한다.
  • 메서드 매칭이 불안정하면 클래스 단위로 먼저 실행한다.

2) 계측 테스트 클래스/메서드 타깃 실행

Gradle 인자 방식:

./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=kr.co.vividnext.sodalive.SomeInstrumentedTest
./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=kr.co.vividnext.sodalive.SomeInstrumentedTest#someMethod

ADB 대안:

adb shell am instrument -w -e class kr.co.vividnext.sodalive.SomeInstrumentedTest#someMethod <test_package>/<runner>