เมื่อแอปเติบโตขึ้น คุณอาจพบว่าการวางองค์ประกอบบางอย่างของแอปอาจเป็นประโยชน์ ในกระบวนการอื่นที่ไม่ใช่กระบวนการหลักของแอป ในการทดสอบคอมโพเนนต์ของแอป กระบวนการที่ไม่ใช่ค่าเริ่มต้น คุณสามารถใช้ฟังก์ชันของ Multiprocess Espresso ได้ เครื่องมือนี้พร้อมใช้งานใน Android 8.0 (API ระดับ 26) ขึ้นไป ช่วยให้คุณสามารถทำสิ่งต่อไปนี้ ทดสอบการโต้ตอบ UI ของแอปที่ข้ามกระบวนการของแอปได้อย่างราบรื่น ขอบเขตขณะยังคงรักษาการรับประกันการซิงค์ของ Espresso
เมื่อใช้ Multiprocess Espresso ให้ใช้เวอร์ชันและขอบเขตต่อไปนี้ ที่ควรคำนึงถึง
- แอปของคุณต้องกําหนดเป้าหมายเป็น Android 8.0 (API ระดับ 26) ขึ้นไป
- เครื่องมือสามารถทดสอบได้เฉพาะคอมโพเนนต์ของแอปที่คุณรวมไว้ในกระบวนการภายใน แพ็กเกจของแอปคุณ โดยไม่สามารถทดสอบกระบวนการภายนอกได้
ใช้เครื่องมือ
หากต้องการทดสอบกระบวนการภายในแอปโดยใช้ Multiprocess Espresso ให้เพิ่มข้อมูลอ้างอิง
ลงในอาร์ติแฟกต์ espresso-remote ในไฟล์ build.gradle
ของแอปของคุณดังนี้
ดึงดูด
dependencies { ... androidTestImplementation 'androidx.test.espresso:espresso-remote:3.6.1' }
Kotlin
dependencies { ... androidTestImplementation('androidx.test.espresso:espresso-remote:3.6.1') }
คุณต้องเพิ่มโค้ดต่อไปนี้ลงในไฟล์ Manifest androidTest
ของแอปด้วย
- องค์ประกอบ
<instrumentation>
ที่กำหนดกระบวนการ - องค์ประกอบ
<meta-data>
ที่ระบุว่าคุณต้องการใช้ Multiprocess Espresso
ข้อมูลโค้ดต่อไปนี้แสดงวิธีเพิ่มองค์ประกอบเหล่านี้
<manifest ... package="androidx.test.mytestapp.tests"> <uses-sdk android:targetSdkVersion="27" android:minSdkVersion="14" /> <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner" android:targetPackage="androidx.test.mytestapp" android:targetProcesses="*"> <meta-data android:name="remoteMethod" android:value="androidx.test.espresso.remote.EspressoRemote#remoteInit" /> </instrumentation> </manifest>
ข้อมูลโค้ดก่อนหน้าระบุไปยังเฟรมเวิร์ก Android ที่คุณต้องการให้ทดสอบ
ของทุกกระบวนการในแพ็กเกจของแอป หากต้องการทดสอบเฉพาะ
ส่วนย่อยของ
กระบวนการของแอป คุณสามารถระบุรายการที่คั่นด้วยจุลภาคภายใน
องค์ประกอบ targetProcesses
แทน:
<instrumentation
...
android:targetProcesses=
"androidx.test.mytestapp:myFirstAppProcessToTest,
androidx.test.mytestapp:mySecondAppProcessToTest" ... />
ทำความเข้าใจสถาปัตยกรรมของเครื่องมือ
เมื่อทดสอบแอปและเริ่มกระบวนการเริ่มต้น คุณอาจทำ UI การโต้ตอบ เช่น การกดปุ่ม จะเป็นการเริ่มกิจกรรมในการโต้ตอบ ขั้นตอนได้ จากนั้น ระบบจะทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้กระบวนการข้ามกระบวนการ ทดสอบโดยใช้ Espresso:
- เฟรมเวิร์ก Android สร้างและเริ่มต้นกระบวนการใหม่เพื่อให้เป็นไปตาม
โครงสร้างการนำทาง แต่ละกระบวนการของ
Instrumentation
จะมีอินสแตนซ์ใหม่ของAndroidJUnitRunner
ในขั้นตอนนี้ กระบวนการใช้เครื่องมือ 2 อย่างนี้ไม่สามารถสื่อสารกับแต่ละกระบวนการ อื่นๆ - ชิ้น
AndroidJUnitRunner
จะมีการลงทะเบียน Espresso เป็นเฟรมเวิร์กการทดสอบ - 2 อินสแตนซ์ของ
AndroidJUnitRunner
ทำการแฮนด์เชคเพื่อสร้างความสัมพันธ์ระหว่างกัน ในเวลาเดียวกัน แต่ละรายการAndroidJUnitRunner
จะเชื่อมโยงลูกค้าที่ลงทะเบียนทั้งหมด เช่น Espresso กับ สำเนาใหม่ในกระบวนการอื่นๆ เพื่อให้ลูกค้าเหล่านี้สามารถ ระหว่างกัน AndroidJUnitRunner
แต่ละรายการ จะยังคงมองหาอินสแตนซ์การใช้เครื่องมือและการทดสอบที่เพิ่มใหม่ต่อไป วางโครงสร้างช่องทางการสื่อสารเพิ่มเติมตามความจำเป็น
รูปที่ 1 แสดงผลลัพธ์ของกระบวนการนี้
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ได้จากแหล่งข้อมูลต่อไปนี้
- การพัฒนาที่ขับเคลื่อนด้วยการทดสอบใน Android พร้อมการสนับสนุนการทดสอบของ Android คลัง วิดีโอเซสชันจาก Google I/O 2017 เริ่มต้นเวลา 36.41 น.