โมดูลทดสอบบางโมดูลอาจต้องมีการตั้งค่าแบบกำหนดเองและขั้นตอนการรื้อถอนซึ่งไม่สามารถทำได้ภายในตัวกรณีทดสอบเอง ตัวอย่างทั่วไปอาจรวมถึง:
- ติดตั้ง apk อื่น ๆ (นอกเหนือจาก apk ทดสอบ)
- ดันไฟล์บางไฟล์ไปที่อุปกรณ์
- รันคำสั่ง (เช่น adb shell pm ...)
ในอดีต ทีมส่วนประกอบมักจะหันไปเขียนการทดสอบฝั่งโฮสต์เพื่อทำงานดังกล่าว ซึ่งต้องใช้ความเข้าใจในการควบคุมของ Trade Federation และโดยทั่วไปจะเพิ่มความซับซ้อนของโมดูลทดสอบ
ด้วยการยืมจาก CTS เราได้แนะนำแนวคิดของการกำหนดค่าโมดูลทดสอบเพื่อรองรับงานดังกล่าว รายการงานทั่วไปด้านบนสามารถทำได้โดยใช้การกำหนดค่าเพียงไม่กี่บรรทัด เพื่อความยืดหยุ่นสูงสุด คุณสามารถใช้ตัวจัดเตรียมเป้าหมายของคุณเอง ตามที่กำหนดโดย ITargetPreparer หรือ ITargetCleaner และกำหนดค่าให้ใช้ในการกำหนดค่าโมดูลทดสอบของคุณเอง
การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นซึ่งเพิ่มลงในโฟลเดอร์ซอร์สของโมดูลระดับบนสุดชื่อ 'AndroidTest.xml' XML เป็นไปตามรูปแบบของไฟล์การกำหนดค่าที่ใช้โดยชุดควบคุมระบบอัตโนมัติการทดสอบของสหพันธ์การค้า ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือแท็ก "target_preparer" และ "test"
ผู้เตรียมเป้าหมาย
แท็ก “target_preparer” ตามชื่อที่แนะนำ จะกำหนดการจัดเตรียมเป้าหมาย (ดู ITargetPreparer ) ที่เสนอวิธีการตั้งค่า ซึ่งจะถูกเรียกก่อนที่โมดูลทดสอบจะถูกดำเนินการสำหรับการทดสอบ และหากคลาสที่อ้างอิงในแท็ก "target_preparer" ใช้ ITargetCleaner ด้วย วิธีการแยกส่วนจะถูกเรียกใช้หลังจากโมดูลทดสอบเสร็จสิ้น
หากต้องการใช้การกำหนดค่าโมดูลทั่วไปในตัว ให้เพิ่มไฟล์ใหม่ 'AndroidTest.xml' ที่โฟลเดอร์ระดับบนสุดสำหรับโมดูลทดสอบของคุณ และเติมด้วยเนื้อหาต่อไปนี้:
<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>
ตามตัวอย่าง เราสามารถเพิ่มแท็กตัวเลือกต่อไปนี้ (ที่ความคิดเห็น "แทรก" ด้านบน):
<target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
<option name="run-command" value="settings put secure accessibility_enabled 1" />
<option name="teardown-command" value="settings put secure accessibility_enabled 0" />
</target_preparer>
ตัวเลือกต่างๆ จะกำหนดค่าชุดสายรัดทดสอบเป็น:
- ก่อนที่จะเรียกใช้โมดูลทดสอบ ให้ดำเนินการคำสั่งเชลล์ “การตั้งค่าใส่การเข้าถึงที่ปลอดภัย_เปิดใช้งาน 1” บนอุปกรณ์
- หลังจากโมดูลทดสอบเสร็จสิ้น ให้รันคำสั่งเชลล์ “settings put Secure accessibility_enabled 0”
ในตัวอย่างนี้ ความสามารถในการเข้าถึงถูกเปิด/ปิดใช้งานก่อน/หลังการดำเนินการโมดูลทดสอบ ตามลำดับ ด้วยตัวอย่างง่ายๆ ที่แสดงให้เห็น จำเป็นต้องครอบคลุมรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้แท็ก "ตัวเลือก" ดังที่แสดงไว้ด้านบน แท็กสามารถมีแอตทริบิวต์ได้ 2 รายการ ได้แก่ ชื่อ ค่า แอตทริบิวต์ name ต้องอ้างอิงถึงหนึ่งในตัวเลือกที่เสนอโดยผู้จัดเตรียม
วัตถุประสงค์ที่แท้จริงของฟิลด์ค่าขึ้นอยู่กับวิธีที่ผู้จัดเตรียมกำหนดตัวเลือก: อาจเป็นสตริง ตัวเลข บูลีน หรือแม้แต่เส้นทางของไฟล์ ต่อไปนี้เป็นบทสรุปของผู้จัดเตรียมเป้าหมายทั่วไปสามราย:
ชื่อคลาส: PushFilePreparer
- ชื่อสั้น : พุชไฟล์
- ฟังก์ชั่น : ผลักไฟล์ที่กำหนดเองภายใต้โฟลเดอร์กรณีทดสอบไปยังปลายทางบนอุปกรณ์
- หมายเหตุ :
- ผู้จัดเตรียมนี้สามารถพุชจากโฟลเดอร์หนึ่งไปอีกโฟลเดอร์หนึ่งหรือจากไฟล์หนึ่งไปอีกไฟล์หนึ่ง นั่นคือคุณไม่สามารถพุชไฟล์ไปไว้ใต้โฟลเดอร์บนอุปกรณ์ได้ คุณต้องระบุชื่อไฟล์ปลายทางไว้ใต้โฟลเดอร์นั้นด้วย
- ตัวเลือก :
- push-file: push-spec ระบุไฟล์ในเครื่องไปยังเส้นทางที่ควรพุชบนอุปกรณ์ อาจทำซ้ำได้ หากมีการกำหนดค่าหลายไฟล์ให้พุชไปยังพาธระยะไกลเดียวกัน ไฟล์ล่าสุดจะถูกพุช
- push: (เลิกใช้แล้ว) push-spec จัดรูปแบบเป็น '
/path/to/srcfile.txt->/path/to/destfile.txt
' หรือ '/path/to/srcfile.txt->/path/to/destdir/
' อาจทำซ้ำได้ พาธนี้อาจสัมพันธ์กับไดเร็กทอรีโมดูลทดสอบหรือไดเร็กทอรีออกเอง - หลังการพุช: คำสั่งให้ทำงานบนอุปกรณ์ (ด้วย `
adb shell <your command>
`) หลังจากพยายามพุชทั้งหมดแล้ว กรณีการใช้งานทั่วไปคือการใช้ chmod สำหรับการอนุญาต
ชื่อคลาส: InstallApkSetup
- ชื่อสั้น: install-apk
- ฟังก์ชัน: ผลักไฟล์ APK ที่กำหนดเองไปไว้ใต้ปลายทางบนอุปกรณ์
- ตัวเลือก:
- test-file-name: ชื่อของ apk ที่จะติดตั้งบนอุปกรณ์
- install-arg: อาร์กิวเมนต์เพิ่มเติมที่จะส่งผ่านไปยังคำสั่ง pm install รวมถึงเครื่องหมายขีดนำหน้า เช่น “-d" อาจทำซ้ำได้
ชื่อคลาส: RunCommandTargetPreparer
- ชื่อสั้น: คำสั่ง run
- ฟังก์ชัน: ดำเนินการคำสั่งเชลล์ตามอำเภอใจก่อนหรือหลังการดำเนินการทดสอบโมดูล
- ตัวเลือก:
- run-command: คำสั่งเชลล์ adb ที่จะรัน อาจทำซ้ำได้
- คำสั่งการฉีกขาด: คำสั่งเชลล์ adb ที่จะรันในระหว่างขั้นตอนการแยกส่วน อาจทำซ้ำได้
ชั้นเรียนทดสอบ
คลาสการทดสอบคือคลาสของสหพันธ์การค้าที่จะใช้ในการดำเนินการทดสอบ
<test class="com.android.tradefed.testtype.AndroidJUnitTest">
<option name="package" value="android.test.example.helloworld"/>
<option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>
ต่อไปนี้เป็นคลาสการทดสอบทั่วไปสามคลาส:
ชื่อคลาส: Gtest
- ชื่อสั้น: gtest
- ฟังก์ชัน: การทดสอบที่รันแพ็คเกจการทดสอบดั้งเดิมบนอุปกรณ์ที่กำหนด
- ตัวเลือก:
- Native-test-device-path: เส้นทางบนอุปกรณ์ที่มีการทดสอบเนทิฟอยู่
ชื่อคลาส: InstrumentationTest
- ชื่อสั้น: เครื่องมือวัด
- ฟังก์ชัน: การทดสอบที่รันแพ็คเกจการทดสอบเครื่องมือวัดบนอุปกรณ์ที่กำหนด
- ตัวเลือก:
- package: ชื่อแพ็คเกจรายการของแอปพลิเคชันทดสอบ Android ที่จะรัน
- class: ชื่อคลาสทดสอบที่จะรัน
- method: ชื่อวิธีทดสอบที่จะรัน
ชื่อคลาส: AndroidJUnitTest
- ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็คเกจการทดสอบเครื่องมือบนอุปกรณ์ที่กำหนดโดยใช้ android.support.test.runner.AndroidJUnitRunner นี่เป็นวิธีหลักในการดำเนินการทดสอบเครื่องมือวัด