Robolectric เป็นเฟรมเวิร์กการทดสอบหน่วยมาตรฐานอุตสาหกรรมสำหรับ Android ด้วย Robolectric การทดสอบของคุณจะทำงานในสภาพแวดล้อม Android จำลองภายใน JVM โดยไม่มีค่าใช้จ่ายและความไม่สม่ำเสมอของโปรแกรมจำลอง การทดสอบ Robolectric จะทำงานเร็วกว่าการทดสอบบนโปรแกรมจำลองที่สตาร์ทตอนเย็นเป็นประจำถึง 10 เท่า
Robolectric รองรับการรันการทดสอบหน่วยสำหรับ Android 15 เวอร์ชันที่แตกต่างกัน ตั้งแต่ Lollipop (API ระดับ 21) ถึง V (API ระดับ 35)
นี่คือตัวอย่างการทดสอบง่ายๆ ที่เขียนโดยใช้ 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 ได้รับการพัฒนาอย่างแข็งขันในหลายพื้นที่ ตำแหน่งหลักคือพื้นที่เก็บข้อมูล GitHub ซึ่งถือเป็น แหล่งที่มาของความจริง สำหรับโค้ด Robolectric เป็นที่ที่การมีส่วนร่วมจากชุมชนนักพัฒนา Android ในวงกว้างเกิดขึ้น นอกจากนี้ยังมีแผนผังการพัฒนา Robolectric ภายในที่ Google ซึ่งได้รับการสนับสนุนจากนักพัฒนา Android บุคคลที่หนึ่ง การมีแผนผังการพัฒนา Robolectric ภายในที่ Google ช่วยให้นักพัฒนา Android บุคคลที่หนึ่งสามารถมีส่วนร่วมกับ Robolectric ได้อย่างมีประสิทธิภาพมากขึ้น แผนผังนี้ซิงค์โดยตรงกับสาขา google
ทุกครั้งที่มีการเปลี่ยนแปลงเกิดขึ้นโดยใช้เครื่องมือซิงค์โค้ด Copybara
การผสานสองทิศทางของสาขานี้และสาขา master
เกิดขึ้นเป็นประจำ
Robolectric ยังมีการใช้งานในแพลตฟอร์ม Android ผ่านโครงการซื้อคืนภายนอก/robolectric โดยทั่วไปการมีส่วนร่วมในแผนผังต้นทางนี้จะเกี่ยวข้องกับการรองรับ SDK ใหม่และ API ของแพลตฟอร์มที่กำลังพัฒนา การเปลี่ยนแปลงจากสาขานี้จะถูกอัปสตรีมไปยังแผนผัง Robolectric ภายในที่ Google ซึ่งในที่สุดก็จะเผยแพร่ไปยังสาขา 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 "
}