-
모듈 간 테스트 코드 공유하기 (Android Test Fixtures)Android 2025. 10. 26. 20:51
OKR (Objective & Key Results)
Objective:
Android Gradle의 testFixtures 기능을 이해하고,
모듈 간 테스트 유틸과 더블(mock) 코드를 재사용할 수 있도록 한다.Key Results:
- testFixtures.enable = true의 역할을 명확히 설명할 수 있다.
- src/testFixtures 디렉토리를 구성해 공용 테스트 코드를 작성할 수 있다.
- 다른 모듈에서 testFixtures를 불러오는 방법을 직접 적용할 수 있다.
Test Fixtures란?
테스트를 작성하다 보면 여러 테스트에서 공통으로 사용하는 코드가 생긴다.
예를 들어 다음과 같은 코드들이다.
- 테스트용 유틸리티 클래스
- 더미 데이터 생성기
- Mock 객체
- 공용 테스트 헬퍼
이런 코드를 src/test/java에 넣으면 해당 모듈 안에서만 접근할 수 있다.
다른 모듈의 테스트에서는 사용할 수 없다.이 문제를 해결하기 위해 Gradle은 Test Fixtures라는 기능을 제공한다.
Test Fixtures는 테스트 전용 공용 코드 영역으로, 앱 빌드에는 포함되지 않지만 테스트 코드에서는 모듈 간 공유가 가능하다.
Test Fixtures 디렉토리 구조
Test Fixtures를 활성화하면 다음과 같은 디렉토리 구조를 사용할 수 있다.
my-module/ └── src/ ├── main/ ├── test/ ├── androidTest/ └── testFixtures/ ← 공용 테스트 코드 작성 위치
Gradle 설정 방법
모듈의 build.gradle.kts 파일에 다음을 추가한다.
android { namespace = "com.linecorp.line.cms.popup.data" resourcePrefix = "cms_popup_" // Test Fixtures 활성화 testFixtures.enable = true }이 설정을 추가하면 Gradle이 자동으로 src/testFixtures 디렉토리를 인식한다.
이 디렉토리 안의 코드는 테스트 시점에만 사용 가능하며, 릴리즈 빌드에는 포함되지 않는다.
다른 모듈에서 사용하는 방법
다른 모듈에서 testFixtures 코드를 가져오려면 다음처럼 의존성을 추가한다.
dependencies { testImplementation(testFixtures(project(":core"))) }이제 core 모듈의 src/testFixtures 안에 있는 코드를
현재 모듈의 테스트 코드에서 직접 사용할 수 있다.
사용 예시
예를 들어, core 모듈에 테스트용 Fake Repository를 추가한다고 하자.
// core/src/testFixtures/java/com/example/testutils/FakeUserRepository.kt package com.example.testutils class FakeUserRepository { fun getFakeUser() = "TestUser" }이제 다른 모듈(feature-login)에서 이를 불러와 사용할 수 있다.
// feature-login/src/test/java/com/example/feature_login/LoginViewModelTest.kt package com.example.feature_login import com.example.testutils.FakeUserRepository import org.junit.Test import kotlin.test.assertEquals class LoginViewModelTest { @Test fun testFakeUser() { val repo = FakeUserRepository() assertEquals("TestUser", repo.getFakeUser()) } }이처럼 testFixtures를 이용하면 공용 테스트 코드를 중복 없이 재사용할 수 있다.
정리
항목설명역할 모듈 간 테스트 유틸, 더블, 헬퍼 코드 공유 디렉토리 src/testFixtures/java 활성화 android { testFixtures.enable = true } 의존 추가 testImplementation(testFixtures(project(":module"))) 앱 빌드 포함 여부 포함되지 않음 (테스트 전용)
결론
testFixtures는 테스트 코드의 재사용성을 높이고 유지보수를 단순화하는 기능이다.
테스트 유틸이나 Mock 객체가 여러 모듈에 흩어져 있다면,
testFixtures.enable = true 설정을 추가해 공용 테스트 구조를 정리하는 것이 좋다.'Android' 카테고리의 다른 글
ScrollableState recompostion을 막는 derivedStateOf 완전 이해하기 (0) 2025.11.28 Room에서 CASCADE ON DELETE + REPLACE(=DELETE + INSERT) 의 충돌시 전략 정리 (0) 2025.11.28 Android에서 Glide를 더이상 사용할 수 없는 이유 (0) 2025.10.21 Android에서 Gson을 더 이상 사용하면 안 되는 이유와 Kotlinx.serialization 마이그레이션 가이드 (0) 2025.10.21 LiveData와 Flow: Android UI 데이터 관찰의 두 가지 접근 방식 비교 (1) 2024.11.26