상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
양육권 변호사가 전하는 최근 법률 변화
양육권 변호사와의 상담 과정, 절차 소개
이혼소송 잘하는 변호사와의 상담을 통해 알게 된 것들
이더리움 커뮤니티와 함께하는 성장 이야기
현명한 대출을 위한 은행 대출 조회 활용법
"마이너스 통장과 카드론, 무엇이 더 좋을까?"
대출 잘되는 은행으로 재정 계획 세우기
결혼 자금 마련을 위한 은행 대출 한도
소규모 기업을 위한 은행 대출 한도 혜택
사람들 사이의 은행 대출 한도에 대한 이야기
대출 최대한도 확인하는 방법
대출 최대 한도, 통신 요금과의 관련성
Previous
Next
수정하기 - Robolectric의 안드로이드 종속성을 이해하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Robolectric은 안드로이드 애플리케이션을 JVM 환경에서 실행할 수 있도록 해주는 단위 테스트 프레임워크입니다. 기본적으로 안드로이드 SDK에 의존하는 코드(예: android.view, android.content 등의 프레임워크 API)를 실제 디바이스나 에뮬레이터 없이 테스트할 수 있게 해줍니다. Robolectric의 안드로이드 종속성을 이해하려면 다음 핵심 개념들을 알아야 합니다. 1. 안드로이드 SDK 대신 Robolectric Shadow 객체 사용 안드로이드 프레임워크 API는 기본적으로 C++과 Java로 작성되어 있고, 실제 구현이 안드로이드 플랫폼에 의존합니다. Robolectric은 기본 SDK 클래스를 'Shadow'라는 이름의 Java 클래스로 재구현하여 JVM에서 동작하도록 만듭니다. 즉, 실제 안드로이드 클래스 대신 Robolectric Shadow가 같은 API를 흉내 내면서 JVM 위에서 정확한 동작을 재현하게 합니다. 2. android.jar와 Robolectric의 관계 테스트 코드는 일반적으로 android.jar 컴파일 종속성을 갖습니다. android.jar는 안드로이드 API 클래스의 스텁(stub) 구현체(대부분 메서드는 비어 있거나 예외를 던지고 실제 동작은 없음)를 포함합니다. Robolectric은 이 안드로이드 API 스텁을 바탕으로 자체 Shadow 클래스와 함께 동작하여 실제 동작하는 프레임워크 동작을 흉내 냅니다. 따라서 Robolectric은 안드로이드 SDK가 제공하는 API '타입' 정보가 필요하지만, 직접적인 구현은 Shadow 객체가 담당합니다. 3. 종속성 그래프와 Robolectric Runtime Robolectric은 테스트에 필요한 다양한 내장 Shadow 클래스를 포함하고 있습니다. 일반적으로 `robolectric` 라이브러리를 Gradle 종속성에 추가하면, robolectric-shadow-* 같은 아티팩트들이 함께 포함되어 실제 API 클래스를 대체하는 Shadow들이 제공됩니다. 테스트가 실행되면 Robolectric Runner가 테스트 JVM 프로세스 내에서 안드로이드 런타임 환경을 시뮬레이션하기 위해 이 Shadow 클래스를 바인딩시키며, 클래스 로딩과 메서드 호출을 가로채 실제 안드로이드 디바이스 없이도 안드로이드 API처럼 동작하도록 만듭니다. 4. API 레벨과 Robolectric 버전 매칭 Robolectric은 특정 안드로이드 API 레벨을 대상으로 Shadow 구현을 따로 유지합니다. 예를 들어, API 21 (Lollipop)을 타겟으로 할 때와 API 30 (Android 11)을 타겟으로 할 때 각각의 Shadow 구현이 조금씩 다를 수 있습니다. 따라서 build.gradle에서 `testOptions { unitTests.includeAndroid<a href='https://sangseek.com/sangseeks/Resources/ko'>Resources</a> = true }` 등과 Robolectric 버전 및 설정을 맞춰야 하고, `@Config(sdk = ...)`를 통해 테스트할 API 레벨을 지정할 수 있습니다. 5. 한계점과 종속성 문제 인식 Robolectric이 완전히 실제 안드로이드와 1:1 동작하는 것은 아니며, 일부 시스템 서비스나 네이티브 구현 의존성은 제대로 동작하지 않거나 직접적으로 흉내내지 못합니다. 이런 부분은 Mockito나 다른 Mocking 프레임워크와 조합해서 테스트해야 합니다. 또한, 새로운 안드로이드 API가 빠르게 나올 경우 Robolectric의 Shadow 구현이 늦게 따라갈 수 있으므로, 최신 안드로이드 종속성을 가진 코드에 대해선 Robolectric 지원 여부를 미리 확인하는 것이 중요합니다. --- 요약하자면: Robolectric의 안드로이드 종속성은 실제 안드로이드 디바이스에서 제공하는 API 타입 정보를 가진 `android.jar`를 컴파일 종속성으로 사용하되, 런타임에 해당 API들을 Robolectric이 제공하는 Shadow 객체들이 대체하여 JVM 내에서 안드로이드 프레임워크 동작을 시뮬레이트하는 구조입니다. 때문에 안드로이드 SDK 코드에 대한 직접적인 구현 의존성은 없지만, API 선언에 대한 종속성은 분명히 존재하며, Shadow 구현과 안드로이드 API 레벨 매칭, Robolectric 라이브러리 버전 관리를 통해 안정적인 테스트 환경을 유지할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기