Robolectric adalah kerangka pengujian unit standar industri untuk Android. Dengan Robolectric, pengujian Anda berjalan di lingkungan simulasi Android di dalam JVM, tanpa overhead dan kelemahan emulator. Pengujian robolektrik secara rutin berjalan 10x lebih cepat dibandingkan pengujian pada emulator yang dijalankan dalam keadaan dingin.
Robolectric mendukung pengujian unit untuk 15 versi Android yang berbeda, mulai dari Lollipop (API level 21) hingga V (API level 35).
Berikut ini contoh tes sederhana yang ditulis menggunakan 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!" ));
}
}
Untuk informasi lebih lanjut tentang cara memasang dan menggunakan Robolectric pada proyek Anda, memperluas fungsinya, dan bergabung dengan komunitas kontributor, silakan kunjungi robolectric.org.
Jika Anda ingin memulai proyek baru dengan pengujian Robolectric, Anda dapat merujuk ke deckard
(untuk Maven atau Gradle) sebagai panduan untuk menyiapkan Android dan Robolectric di mesin Anda.
build.gradle
testImplementation " junit:junit:4.13.2 "
testImplementation " org.robolectric:robolectric:4.14.1 "
Robolectric dibangun menggunakan Gradle. Android Studio dan IntelliJ dapat mengimpor file build.gradle.kts
tingkat atas dan secara otomatis akan membuat file proyek dari file tersebut.
Untuk mengaktifkan dan menjalankan Robolectric di mesin Anda, lihat panduan ini.
Untuk mendapatkan gambaran umum tingkat tinggi tentang arsitektur Robolectric, kunjungi robolectric.org.
Robolectric aktif dikembangkan di beberapa lokasi. Lokasi utamanya adalah repositori GitHub ini, yang dianggap sebagai sumber kebenaran untuk kode Robolectric. Di sinilah kontribusi dari komunitas pengembang Android yang lebih luas terjadi. Ada juga pohon pengembangan Robolectric yang aktif secara internal di Google, tempat terjadinya kontribusi dari pengembang Android pihak pertama. Dengan memiliki pohon pengembangan Robolectric secara internal di Google, hal ini memungkinkan pengembang Android pihak pertama memberikan kontribusi ke Robolectric dengan lebih efisien. Pohon ini disinkronkan langsung ke cabang google
setiap kali terjadi perubahan menggunakan alat sinkronisasi kode Copybara
. Penggabungan dua arah dari cabang ini dan cabang master
terjadi secara teratur.
Robolectric juga digunakan di platform Android melalui proyek repo eksternal/robolectric. Kontribusi pada pohon sumber ini biasanya terkait dengan dukungan SDK baru dan API platform yang terus berkembang. Perubahan dari cabang ini di-upstream ke pohon Robolectric internal di Google, yang pada akhirnya disebarkan ke cabang GitHub.
Meskipun rumit, model pengembangan terdistribusi ini memungkinkan pengembang Android di lingkungan berbeda untuk menggunakan dan berkontribusi pada Robolectric, sekaligus memungkinkan perubahan pada akhirnya diterapkan pada rilis Robolectric publik.
Jika Anda ingin tetap berada di garis terdepan, Anda dapat mencoba menjalankan versi snapshot. Ingatlah bahwa snapshot mewakili perubahan terbaru pada master
dan mungkin mengandung bug.
build.gradle
repositories {
maven { url " https://oss.sonatype.org/content/repositories/snapshots " }
}
dependencies {
testImplementation " org.robolectric:robolectric:4.15-SNAPSHOT "
}