อะไรคือวิธีที่แนะนำให้ทำสิ่งนี้โดยทางโปรแกรม?
ตัวเลือกเดียวที่เป็นไปได้คือการเรียกใช้คำสั่ง ADB adb shell pm clear packageก่อนการทดสอบ ปัญหาที่ใหญ่ที่สุดคือมันปวดหัวที่รวมการทดสอบการทำงานและคำสั่งเชลล์
อย่างไรก็ตามเรา (ที่ Mediafe) มาพร้อมกับโซลูชันบางอย่างที่สามารถทำงานให้คุณได้บนอุปกรณ์ที่ไม่ได้รับการรูทปกติ สิ่งที่คุณต้องทำคือการเพิ่มคำอธิบายประกอบ ส่วนที่เหลือทั้งหมดจะกระทำโดยการทำงานที่เรียบง่ายสคริปต์ทุบตี
เพียงเพิ่ม@ClearDataคำอธิบายประกอบก่อนการทดสอบใด ๆ ของคุณและ tada 🎉คำสั่ง ADB clear จะถูกดำเนินการก่อนที่จะดำเนินการทดสอบ
นี่คือตัวอย่างของการทดสอบดังกล่าว:
@Test
@ClearData
public void someTest() {
// your test
}
แนวคิดมีดังนี้
- อ่านการทดสอบทั้งหมดโดยใช้
adb shell am instrument -e log true
- สร้างแผนการดำเนินการโดยแยกวิเคราะห์ผลลัพธ์จาก (1)
- เรียกใช้แผนการดำเนินการทีละบรรทัด
การใช้แนวคิดเดียวกันนี้เป็นตัวเลือกทั้งหมดที่คุณสามารถรองรับได้อย่างง่ายดาย:
- ข้อมูลชัดเจน
- ล้างแถบการแจ้งเตือน
- parameterize
- กรองและเรียกใช้ด้วยแท็ก
ใช้คำอธิบายประกอบเท่านั้น แบบนี้:
@Test
@ClearData
@Tags(tags = {"sanity", "medium"})
@Parameterized.Repeat(count = 3)
public void myTest() throws Exception {
String param = params[index];
// ...
}
โบนัส! 🎁สำหรับการทดสอบที่ล้มเหลวแต่ละครั้ง:
- รวบรวม Logcat + stacktrace
- บันทึกวิดีโอ (mp4)
- ฐานข้อมูล (sqlite)
- การกำหนดค่าเริ่มต้นที่ใช้ร่วมกัน Dump
- รวบรวมไฟล์ dumpsys เช่น: แบตเตอรี่, netstats และอื่น ๆ
โดยทั่วไปแล้วมันง่ายที่จะเพิ่มตัวเลือกเพิ่มเติมเนื่องจากการทดสอบจะถูกดำเนินการทีละรายการจากสคริปต์ทุบตีแทนที่จะเป็นงานไล่ระดับ
📗 โพสต์บล็อกเต็ม : https://medium.com/medisafe-tech-blog/running-android-ui-tests-53e85e5c8da8
📘 ซอร์สโค้ดพร้อมตัวอย่าง : https://github.com/medisafe/run-android-tests
หวังว่านี้จะตอบคำถาม 6 ปี;)