Robolectric은 Android용 업계 표준 단위 테스트 프레임워크입니다. Robolectric을 사용하면 에뮬레이터의 오버헤드나 취약성 없이 JVM 내부의 시뮬레이션된 Android 환경에서 테스트가 실행됩니다. Robolectric 테스트는 일반적으로 콜드 스타트 에뮬레이터보다 10배 빠르게 실행됩니다.
Robolectric은 Lollipop(API 레벨 21)부터 V(API 레벨 35)까지 15 가지 Android 버전에 대한 단위 테스트 실행을 지원합니다.
다음은 Robolectric을 사용하여 작성된 간단한 테스트의 예입니다.
@ RunWith ( AndroidJUnit4 . class )
public class MyActivityTest {
@ Test
public void clickingButton_shouldChangeResultsViewText () {
Activity activity = Robolectric . setupActivity ( MyActivity . class );
Button button = ( Button ) activity . findViewById ( R . id . press_me_button );
TextView results = ( TextView ) activity . findViewById ( R . id . results_text_view );
button . performClick ();
assertThat ( results . getText (). toString (), equalTo ( "Testing Android Rocks!" ));
}
}
프로젝트에 Robolectric을 설치 및 사용하는 방법, 기능을 확장하는 방법, 기여자 커뮤니티에 가입하는 방법에 대한 자세한 내용을 보려면 robolectric.org를 방문하세요.
Robolectric 테스트로 새 프로젝트를 시작하려면 deckard
(Maven 또는 Gradle용)를 머신에 Android와 Robolectric을 모두 설정하는 방법에 대한 가이드로 참조할 수 있습니다.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric은 Gradle을 사용하여 구축되었습니다. Android Studio와 IntelliJ 모두 최상위 build.gradle.kts
파일을 가져올 수 있으며 이 파일에서 자동으로 프로젝트 파일을 생성합니다.
Robolectric을 컴퓨터에서 실행하려면 이 가이드를 확인하세요.
Robolectric의 아키텍처에 대한 높은 수준의 개요를 보려면 robolectric.org를 확인하세요.
Robolectric은 여러 위치에서 활발히 개발되고 있습니다. 기본 위치는 Robolectric 코드의 정보 소스 로 간주되는 이 GitHub 저장소입니다. 광범위한 Android 개발자 커뮤니티의 기여가 이루어지는 곳입니다. 또한 Google 내부적으로 Robolectric의 활발한 개발 트리가 있으며, 여기에 자사 Android 개발자의 기여가 발생합니다. Google 내부적으로 Robolectric 개발 트리를 보유함으로써 자사 Android 개발자가 Robolectric에 보다 효율적으로 기여할 수 있습니다. 이 트리는 Copybara
코드 동기화 도구를 사용하여 변경 사항이 발생할 때마다 google
분기에 직접 동기화됩니다. 이 분기와 master
분기의 양방향 병합은 정기적으로 발생합니다.
Robolectric은 외부/robolectric repo 프로젝트를 통해 Android 플랫폼에서도 사용됩니다. 이 소스 트리에 대한 기여는 일반적으로 새로운 SDK 지원 및 진화하는 플랫폼 API와 관련되어 있습니다. 이 분기의 변경 사항은 Google의 내부 Robolectric 트리로 업스트림되어 결국 GitHub 분기로 전파됩니다.
복잡하기는 하지만 이 분산 개발 모델을 사용하면 다양한 환경의 Android 개발자가 Robolectric을 사용하고 기여할 수 있으며 궁극적으로 공개 Robolectric 릴리스에 변경 사항을 적용할 수 있습니다.
최신 기술을 활용하고 싶다면 스냅샷 빌드에 대해 실행해 볼 수 있습니다. 스냅샷은 master
의 가장 최근 변경 사항을 나타내며 버그가 포함될 수 있다는 점을 명심하세요.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}