อ่านก่อน ทดสอบแอปของคุณ บน developer.android.com โปรดทราบว่ามีความแตกต่างบางประการในการทดสอบเครื่องมือที่ใช้ในการทดสอบแพลตฟอร์ม
โดยสรุป การทดสอบเครื่องมือจัดเตรียมสภาพแวดล้อมการดำเนินการทดสอบพิเศษที่เปิดใช้งานผ่านคำสั่ง am instrument
โดยที่กระบวนการแอปพลิเคชันเป้าหมายจะเริ่มต้นใหม่และเริ่มต้นด้วยบริบทแอปพลิเคชันพื้นฐาน และเธรดเครื่องมือวัดจะเริ่มต้นภายในกระบวนการแอปพลิเคชัน VM โค้ดทดสอบของคุณเริ่มดำเนินการในเธรดเครื่องมือวัดนี้ และมาพร้อมกับอินสแตนซ์ Instrumentation
ที่ให้การเข้าถึงบริบทของแอปพลิเคชันและ API เพื่อจัดการกระบวนการแอปพลิเคชันภายใต้การทดสอบ
แนวคิดหลัก
- เครื่องมือวัดต้องประกาศในแพ็คเกจแอปพลิเคชัน โดยมีแท็ก
<instrumentation>
ซ้อนอยู่ใต้แท็ก<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
ในตำแหน่งใดตำแหน่งหนึ่งด้านบนดู frameworks/base/core/tests/coretests/ สำหรับตัวอย่าง หมายเหตุบรรทัดเหล่านี้ติดตั้งแอพพิเศษ:
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
อย่าลืมทำเครื่องหมายการทดสอบของคุณเป็น
@SmallTest
,@MediumTest
หรือ@LargeTest
สร้างโมดูลทดสอบด้วย m เช่น:
m FrameworksCoreTests
เรียกใช้การทดสอบ:
วิธีที่ง่ายที่สุดคือใช้ Atest ดังนี้:
atest FrameworksCoreTests
หรือสำหรับการทดสอบที่ซับซ้อนมากขึ้น ให้ใช้ การทดสอบ 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
การทดสอบของคุณสามารถยืนยันอย่างชัดเจนว่าผ่านหรือไม่ผ่านโดยใช้ JUnit
APIs นอกจากนี้ ข้อยกเว้นที่ตรวจไม่พบจะทำให้การทำงานล้มเหลวด้วย
ในการส่งเมตริกประสิทธิภาพ โค้ดทดสอบของคุณสามารถเรียก Instrumentation#sendStatus
เพื่อส่งรายการคู่คีย์-ค่า โปรดทราบว่า:
- เมตริกอาจเป็นจำนวนเต็มหรือทศนิยมก็ได้
- ค่าที่ไม่ใช่ตัวเลขจะถูกยกเลิก
- apk ทดสอบของคุณสามารถเป็นได้ทั้งการทดสอบการทำงานหรือการทดสอบเมตริก อย่างไรก็ตาม ขณะนี้ยังไม่รองรับการผสมทั้งสองอย่าง