상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Robolectric의 코드 커버리지 분석은 어떻게 수행하나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Robolectric은 Android 단위 테스트를 JVM 환경에서 실행할 수 있도록 해주는 프레임워크로, Android 에뮬레이터나 실제 기기 없이도 빠르게 테스트를 수행할 수 있습니다. Robolectric 테스트의 코드 커버리지 분석을 수행하는 것은 일반 Android 테스트의 커버리지 측정과 유사하지만, 몇 가지 주의점과 설정 방법이 있습니다. 1. 커버리지 도구 선택 Android 프로젝트에서 가장 흔히 사용하는 커버리지 도구는 JaCoCo입니다. JaCoCo는 Gradle과 쉽게 연동되며, JVM 기반 테스트와 Android Instrumentation 테스트 모두에 적용할 수 있습니다. Robolectric 테스트는 JVM에서 돌아가기 때문에 JaCoCo로 커버리지 수집이 가능합니다. 2. 기본적인 JaCoCo 설정 프로젝트의 `build.gradle` 파일에서 JaCoCo를 활성화합니다. 예를 들어: ```groovy apply plugin: 'jacoco' jacoco { toolVersion = "0.8.8" // 원하는 버전 사용 } tasks.withType(Test) { finalizedBy jacocoTestReport // 테스트 후 보고서 생성 jacoco.includeNoLocationClasses = true } jacocoTestReport { <a href='https://sangseek.com/sangseeks/dependsOn/ko'>dependsOn</a> testDebugUnitTest // 테스트 결과 기반 reports { xml.enabled true html.enabled true } } ``` 여기서 `testDebugUnitTest`는 Robolectric 테스트가 실행되는 기본 Gradle 태스크입니다. 3. Robolectric 테스트와 커버리지 수집 Robolectric 테스트는 일반적으로 `src/test/java`에 위치하며, Gradle의 `testDebugUnitTest` 또는 단순히 `test` 태스크로 실행됩니다. JaCoCo는 이 JVM 테스트 런너를 감지하여 커버리지 데이터를 생성합니다. 4. 커버리지 보고서 생성 `./gradlew jacocoTestReport` 명령어로 커버리지 보고서를 생성합니다. 생성된 보고서는 보통 `build/reports/jacoco/jacocoTestReport/html/index.html` 경로에서 확인할 수 있습니다. 여기서 테스트가 커버한 클래스와 메서드, 라인별 커버리지 정보를 시각적으로 확인할 수 있습니다. 5. 주의사항 및 팁 - Android 라이브러리 항목 제외 : Robolectric은 JVM 환경이므로 Android 프레임워크 코드는 포함되지 않습니다. 커버리지 분석 시에는 대개 애플리케이션 코드나 라이브러리 모듈에 집중합니다. - mockito inline 또는 기타 mocking 프레임워크 사용 시 : 커버리지 누락 현상이 발생할 수 있는데, 이 경우 Gradle 위임과 Jacoco 및 Mockito 설정을 점검해야 합니다. - multi-module 프로젝트 : 각 모듈별로 JaCoCo 보고서를 별도로 설정하거나, Jacoco 커버리지 병합 작업을 추가하여 통합 보고서를 만들 수 있습니다. - Gradle 버전 및 플러그인 이슈 : Gradle과 Android Gradle Plugin 버전에 따라 Jacoco 설정 방법이나 테스트 태스크 이름이 다를 수 있으니, 공식 문서와 최신 정보를 참고하는 것이 좋습니다. 6. 예제 ```groovy android { ... testOptions { unitTests.all { jacoco { includeNoLocationClasses = true } } } } jacoco { toolVersion = "0.8.8" } tasks.withType(Test).configureEach { finalizedBy("jacocoTestReport") } tasks.register("jacocoTestReport", JacocoReport) { dependsOn("testDebugUnitTest") reports { html.required.set(true) xml.required.set(true) } val fileTree = fileTree("${buildDir}/intermediates/javac/debug/classes") classDirectories.setFrom(fileTree) sourceDirectories.setFrom(files("src/main/java")) executionData.setFrom(files("${buildDir}/jacoco/testDebugUnitTest.exec")) } ``` 이 설정을 적용하면 Robolectric unit test를 실행할 때 JaCoCo가 커버리지 정보를 수집하고, `jacocoTestReport` 태스크를 통해 보고서를 생성합니다. --- 요약 : Robolectric 테스트에 대한 코드 커버리지 분석은 JaCoCo 같은 JVM용 커버리지 도구를 활용해 진행합니다. Gradle 설정에 JaCoCo를 활성화하고, unit test 태스크와 연결하여 테스트 실행 시 커버리지 데이터를 수집 및 보고서를 생성할 수 있습니다. JVM 환경에서 동작하는 Robolectric 특성상, Android Instrumentation 테스트와 달리 일반 JVM 단위 테스트 방식으로 커버리지가 수집됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기