โมดูลทดสอบบางตัวอาจต้องมีการตั้งค่าแบบกำหนดเองและแยกขั้นตอนที่ไม่สามารถทำได้ภายในตัวกรณีทดสอบ ตัวอย่างทั่วไปอาจรวมถึง:
- ติดตั้ง apk อื่น ๆ (นอกเหนือจาก apk ทดสอบ)
- ดันไฟล์บางไฟล์ไปที่เครื่อง
- รันคำสั่ง (เช่น adb shell pm ... )
ในอดีต ทีมส่วนประกอบมักจะใช้การเขียนการทดสอบฝั่งเจ้าบ้านเพื่อทำงานดังกล่าว ซึ่งต้องใช้ความเข้าใจเกี่ยวกับสายรัดของสหพันธ์การค้า และโดยทั่วไปจะเพิ่มความซับซ้อนของโมดูลการทดสอบ
การยืมจาก CTS เราแนะนำแนวคิดของการกำหนดค่าโมดูลทดสอบเพื่อรองรับงานดังกล่าว รายการงานทั่วไปด้านบนสามารถทำได้โดยการกำหนดค่าเพียงไม่กี่บรรทัด เพื่อความยืดหยุ่นสูงสุด คุณสามารถใช้ตัวจัดเตรียมเป้าหมายของคุณเองได้ตามที่กำหนดโดย ITargetPreparer หรือ ITargetCleaner และกำหนดค่าเพื่อใช้ในการกำหนดค่าโมดูลทดสอบของคุณเอง
การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบเป็นไฟล์ XML ที่จำเป็นซึ่งเพิ่มไปยังโฟลเดอร์ซอร์สของโมดูลระดับบนสุดที่ชื่อ 'AndroidTest.xml' XML เป็นไปตามรูปแบบของไฟล์การกำหนดค่าที่ใช้โดยการทดสอบระบบอัตโนมัติของ Trade Federation ปัจจุบัน แท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือแท็ก “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>
ตัวเลือกต่างๆ จะกำหนดค่าสายรัดทดสอบเป็น:
- ก่อนที่จะเรียกใช้โมดูลทดสอบ ให้รันคำสั่งเชลล์ "การตั้งค่าทำให้การเข้าถึงได้อย่างปลอดภัย_enabled 1" บนอุปกรณ์
- หลังจากโมดูลการทดสอบเสร็จสิ้น ให้รันคำสั่งเชลล์ "การตั้งค่าทำให้การเข้าถึงได้อย่างปลอดภัย_enabled 0"
ในตัวอย่างนี้ การเปิด/ปิดการช่วยสำหรับการเข้าถึงก่อน/หลังการทำงานของโมดูลทดสอบ ตามลำดับ ด้วยตัวอย่างง่ายๆ ที่แสดงให้เห็น จำเป็นต้องครอบคลุมรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการใช้แท็ก "ตัวเลือก" ดังที่แสดงไว้ข้างต้น แท็กสามารถมีแอตทริบิวต์ได้ 2 อย่าง ได้แก่ ชื่อ ค่า แอตทริบิวต์ name ระบุชื่อของตัวเลือก และแบ่งออกเป็นสองส่วนเพิ่มเติมโดยคั่นด้วยเครื่องหมายทวิภาค: ชื่อย่อสำหรับผู้จัดเตรียม และชื่อตัวเลือกจริงที่ผู้จัดเตรียมเสนอ
วัตถุประสงค์ที่แท้จริงของฟิลด์ค่าขึ้นอยู่กับวิธีที่ผู้จัดเตรียมกำหนดตัวเลือก: อาจเป็นสตริง ตัวเลข บูลีน หรือแม้แต่เส้นทางของไฟล์ เป็นต้น ในตัวอย่างข้างต้น ชื่อ "run-command:run-command" หมายถึง ว่าเรากำลังตั้งค่าตัวเลือก "run-command" ที่กำหนดโดยผู้จัดเตรียมเป้าหมายด้วยชื่อย่อ "run-command" และชื่อ "run-command:teardown-command" หมายความว่าเรากำลังตั้งค่าตัวเลือก "teardown-command" ซึ่งกำหนดโดยผู้จัดเตรียมเป้าหมายเดียวกันกับชื่อย่อ "run-command" ต่อไปนี้คือข้อมูลสรุปของผู้จัดเตรียมเป้าหมายทั่วไปสามราย:
ชื่อคลาส: PushFilePreparer
- ชื่อสั้น : พุชไฟล์
- ฟังก์ชัน : ผลักไฟล์ที่กำหนดเองภายใต้โฟลเดอร์กรณีทดสอบไปยังปลายทางบนอุปกรณ์
- หมายเหตุ :
- ผู้จัดเตรียมนี้สามารถผลักดันจากโฟลเดอร์หนึ่งไปอีกโฟลเดอร์หนึ่งหรือไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง นั่นคือ คุณไม่สามารถพุชไฟล์ภายใต้โฟลเดอร์บนอุปกรณ์ได้: คุณต้องระบุชื่อไฟล์ปลายทางภายใต้โฟลเดอร์นั้นด้วย
- ตัวเลือก :
- ไฟล์พุช: ข้อมูลจำเพาะแบบพุช ซึ่งระบุไฟล์ในเครื่องไปยังพาธที่ควรจะพุชบนอุปกรณ์ อาจจะทำซ้ำ หากกำหนดค่าหลายไฟล์ให้ผลักไปยังเส้นทางระยะไกลเดียวกัน ไฟล์ล่าสุดจะถูกผลัก
- พุช: (เลิกใช้แล้ว) ข้อมูลจำเพาะแบบพุช จัดรูปแบบเป็น '
/path/to/srcfile.txt->/path/to/destfile.txt
' หรือ '/path/to/srcfile.txt->/path/to/destdir/
'. อาจจะทำซ้ำ เส้นทางนี้อาจสัมพันธ์กับไดเร็กทอรีโมดูลทดสอบหรือไดเร็กทอรีเอาต์เอง - post-push: คำสั่งให้ทำงานบนอุปกรณ์ (ด้วย `
adb shell <your command>
`) หลังจากที่พยายามกดทั้งหมดแล้ว กรณีการใช้งานทั่วไปจะใช้ chmod สำหรับการอนุญาต
ชื่อคลาส: InstallApkSetup
- ชื่อสั้น: install-apk
- ฟังก์ชัน: ผลักไฟล์ apk โดยพลการภายใต้ไปยังปลายทางบนอุปกรณ์
- ตัวเลือก:
- test-file-name: ชื่อของ apk ที่จะติดตั้งบนอุปกรณ์
- install-arg: อาร์กิวเมนต์เพิ่มเติมที่จะส่งผ่านไปยังคำสั่ง pm install รวมทั้ง dash นำหน้า เช่น “-d" อาจทำซ้ำได้
ชื่อคลาส: RunCommandTargetPreparer
- ชื่อสั้น: run-command
- ฟังก์ชัน: รันคำสั่งเชลล์โดยพลการก่อนหรือหลังการทดสอบการทำงานของโมดูล
- ตัวเลือก:
- run-command: คำ สั่งเชลล์ adb เพื่อเรียกใช้ อาจจะซ้ำ
- teardown-command: คำ สั่งเชลล์ 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
- ชื่อสั้น: เครื่องมือวัด
- ฟังก์ชัน: การทดสอบที่รันชุดทดสอบเครื่องมือวัดบนอุปกรณ์ที่กำหนด
- ตัวเลือก:
- แพ็คเกจ: ชื่อแพ็คเกจรายการของแอปพลิเคชันทดสอบ Android ที่จะเรียกใช้
- class: ชื่อคลาสทดสอบที่จะรัน
- วิธี: ชื่อวิธีการทดสอบที่จะเรียกใช้
ชื่อคลาส: AndroidJUnitTest
- ฟังก์ชัน: การทดสอบที่รันแพ็คเกจการทดสอบเครื่องมือวัดบนอุปกรณ์ที่กำหนดโดยใช้ android.support.test.runner.AndroidJUnitRunner นี่เป็นวิธีหลักในการดำเนินการทดสอบเครื่องมือวัด