โปรดอ่านหัวข้อทดสอบแอปของคุณก่อน ที่ developer.android.com สังเกตว่ามีข้อแตกต่างบางอย่าง วิธีทดสอบการใช้เครื่องมือในการทดสอบแพลตฟอร์ม
กล่าวโดยสรุป การทดสอบการใช้เครื่องมือจะเป็นการดำเนินการทดสอบพิเศษ
ที่เปิดผ่านคำสั่ง am instrument
โดยที่
กระบวนการสมัครจะเริ่มต้นใหม่ และเริ่มต้นโดยมีบริบทพื้นฐานของแอปพลิเคชัน
และเธรดการใช้เครื่องมือจะเริ่มต้นภายใน VM กระบวนการแอปพลิเคชัน บัญชี
โค้ดทดสอบเริ่มการเรียกใช้บนเทรดการใช้เครื่องมือนี้และมาพร้อมกับ
อินสแตนซ์ Instrumentation
ที่ให้สิทธิ์เข้าถึงบริบทของแอปพลิเคชัน
และ API เพื่อจัดการกระบวนการของแอปพลิเคชันภายใต้การทดสอบ
หัวข้อสำคัญ
- ต้องมีการประกาศการใช้เครื่องมือในแพ็กเกจแอปพลิเคชัน โดยมี
<instrumentation>
ฝังอยู่ใต้แท็ก<manifest>
ของไฟล์ Manifest ของแพ็กเกจแอปพลิเคชัน - ทางเทคนิคแล้วไฟล์ Manifest ของแพ็กเกจแอปพลิเคชันอาจมี
<instrumentation>
แม้ว่าจะไม่ได้นิยมใช้ในลักษณะนี้ <instrumentation>
แต่ละรายการต้องมีสิ่งต่อไปนี้- แอตทริบิวต์
android:name
: ควรเป็นชื่อของคลาสย่อยของInstrumentation
ที่รวมอยู่ในแอปพลิเคชันทดสอบ ซึ่งโดยทั่วไปจะเป็นการทดสอบ โปรแกรมวิ่งที่ใช้งานอยู่ เช่นandroid.support.test.runner.AndroidJUnitRunner
- ต้องกำหนดแอตทริบิวต์
android:targetPackage
ควรค่า ตั้งค่าเป็นแพ็กเกจแอปพลิเคชันที่อยู่ระหว่างการทดสอบ
- แอตทริบิวต์
สรุปขั้นตอน
จุดหมายทั่วไปสําหรับการทดสอบที่เจาะลึกกับบริการเฟรมเวิร์กมีดังนี้
frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests
หากคุณกำลังเพิ่มโมดูลการใช้เครื่องมือใหม่สำหรับคอมโพเนนต์ โปรดดู
ทำตามกฎที่มีอยู่หากคุณเพิ่มการทดสอบลงในหนึ่งใน ตำแหน่งด้านบน หากคุณกำลังตั้งค่าโมดูลการทดสอบใหม่ โปรดทำตาม การตั้งค่า
AndroidManifest.xml
และAndroid.mk
ในสถานที่แห่งใดแห่งหนึ่ง สูงกว่าโปรดดู เฟรมเวิร์ก/ฐาน/แกน/การทดสอบ/coretests/ โปรดทราบว่าบรรทัดต่อไปนี้จะติดตั้งแอปเพิ่มเติม
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
อย่าลืมทำเครื่องหมายการทดสอบเป็น
@SmallTest
,@MediumTest
หรือ@LargeTest
สร้างโมดูลทดสอบด้วย m เช่น
m FrameworksCoreTests
ทำการทดสอบโดยทำดังนี้
วิธีแก้ไขที่ง่ายที่สุดคือการใช้ เช่น ล่าสุด
atest FrameworksCoreTests
หรือสำหรับการทดสอบที่ซับซ้อนมากขึ้น ให้ใช้ Trade Federation Testing Harness
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
หากไม่ได้ใช้ Tradefed ให้ติดตั้งและทำการทดสอบด้วยตนเอง ดังนี้
- ติดตั้ง apk ที่สร้างขึ้น:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
ทำการทดสอบด้วยตัวเลือกต่างๆ ดังนี้
การทดสอบทั้งหมดใน apk
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
การทดสอบทั้งหมดภายใต้แพ็กเกจ Java ที่เฉพาะเจาะจง
adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
การทดสอบทั้งหมดภายใต้คลาสที่เฉพาะเจาะจง
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
วิธีการทดสอบที่เฉพาะเจาะจง
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
การทดสอบของคุณสามารถยืนยันอย่างชัดแจ้งว่าผ่านหรือไม่ผ่านโดยใช้ API ของ JUnit
ใน
นอกจากนี้ ข้อยกเว้นที่ตรวจไม่พบจะทำให้ฟังก์ชันทำงานล้มเหลวด้วย
ในการแสดงเมตริกประสิทธิภาพ โค้ดทดสอบของคุณจะเรียกใช้
Instrumentation#sendStatus
เพื่อส่งรายการคู่คีย์-ค่า สิ่งสำคัญที่ควรทราบมีดังนี้
- เมตริกอาจเป็นจำนวนเต็มหรือจำนวนทศนิยมก็ได้
- ระบบจะทิ้งค่าที่ไม่ใช่ตัวเลข
- APK การทดสอบของคุณสามารถเป็นการทดสอบการทำงานหรือการทดสอบตัวชี้วัดก็ได้ อย่างไรก็ตาม ยังไม่รองรับการผสมทั้งคู่ในขณะนี้