โมดูลการทดสอบบางโมดูลอาจต้องมีขั้นตอนการตั้งค่าและการล้างข้อมูลที่กำหนดเอง ซึ่งไม่สามารถ ดำเนินการภายในกรอบการทดสอบได้ ตัวอย่างทั่วไป ได้แก่
- ติดตั้ง APK อื่นๆ (นอกเหนือจาก APK ของการทดสอบ)
- พุชไฟล์บางไฟล์ไปยังอุปกรณ์
- เรียกใช้คำสั่ง (เช่น adb shell pm ...)
ในอดีต ทีมคอมโพเนนต์มักจะเขียนการทดสอบฝั่งโฮสต์เพื่อทำงานดังกล่าว ซึ่งต้องมีความเข้าใจเกี่ยวกับ Harness ของ Trade Federation และโดยปกติแล้วจะเพิ่มความซับซ้อนของโมดูลทดสอบ
เราได้นำแนวคิดการกำหนดค่าโมดูลทดสอบมาใช้เพื่อรองรับงานดังกล่าว โดยรายการงานทั่วไปข้างต้นสามารถทำได้โดยใช้การกำหนดค่าเพียงไม่กี่บรรทัด คุณยังสามารถใช้ TargetPreparer ของคุณเองได้เพื่อความยืดหยุ่นสูงสุดตามที่กำหนดโดย ITargetPreparer หรือ ITargetCleaner และกำหนดค่าให้ใช้ในการกำหนดค่าโมดูลการทดสอบของคุณเอง
การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นซึ่งเพิ่มลงในโฟลเดอร์แหล่งที่มาของโมดูลระดับบนสุด โดยมีชื่อว่า "AndroidTest.xml" XML จะเป็นไปตามรูปแบบ ของไฟล์การกำหนดค่าที่ใช้โดย Trade Federation Test Automation Harness ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือแท็ก "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>
ตัวอย่างเช่น เราสามารถเพิ่มแท็กตัวเลือกต่อไปนี้ (ที่ความคิดเห็น "insert" ด้านบน)
<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>
ตัวเลือกจะกำหนดค่าชุดทดสอบให้ทำสิ่งต่อไปนี้
- ก่อนเรียกใช้โมดูลทดสอบ ให้รันคำสั่งเชลล์ "settings put secure accessibility_enabled 1" ในอุปกรณ์
- หลังจากโมดูลการทดสอบเสร็จสิ้น ให้เรียกใช้คำสั่งเชลล์ "settings put secure accessibility_enabled 0"
ในตัวอย่างนี้ ระบบจะเปิด/ปิดใช้การช่วยเหลือพิเศษก่อน/หลังการ เรียกใช้โมดูลทดสอบตามลำดับ เมื่อแสดงตัวอย่างง่ายๆ แล้ว จึงจำเป็นต้องกล่าวถึงรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้แท็ก "option" ดังที่แสดงด้านบน แท็กจะมีแอตทริบิวต์ได้ 2 รายการ ได้แก่ ชื่อและค่า แอตทริบิวต์ชื่อต้องอ้างอิงถึง ตัวเลือกใดตัวเลือกหนึ่งที่ผู้เตรียมข้อมูลเสนอ
วัตถุประสงค์ที่แน่นอนของฟิลด์ค่าจะขึ้นอยู่กับวิธีที่ผู้เตรียมกำหนด ตัวเลือก ซึ่งอาจเป็นสตริง ตัวเลข บูลีน หรือแม้แต่เส้นทางไฟล์ ต่อไปนี้คือข้อมูลสรุปเกี่ยวกับผู้เตรียมเป้าหมาย 3 ประเภทที่พบบ่อย
ชื่อคลาส: PushFilePreparer
- ชื่อย่อ: push-file
- ฟังก์ชัน: พุชไฟล์ที่กำหนดเองภายใต้โฟลเดอร์กรณีทดสอบไปยัง ปลายทางในอุปกรณ์
- หมายเหตุ
- ผู้เตรียมข้อมูลนี้สามารถพุชจากโฟลเดอร์ไปยังโฟลเดอร์ หรือจากไฟล์ไปยังไฟล์ได้ กล่าวคือ คุณไม่สามารถพุชไฟล์ภายใต้โฟลเดอร์ในอุปกรณ์ได้ คุณต้อง ระบุชื่อไฟล์ปลายทางภายใต้โฟลเดอร์นั้นด้วย
- options:
- push-file: Push-spec ที่ระบุไฟล์ในเครื่องไปยังเส้นทาง ที่ควรจะพุชในอุปกรณ์ ใช้ซ้ำได้ หากกำหนดค่าไฟล์หลายไฟล์ให้พุชไปยังเส้นทางระยะไกลเดียวกัน ระบบจะพุชไฟล์ล่าสุด
- push: (เลิกใช้งานแล้ว) ข้อมูลจำเพาะแบบพุชที่จัดรูปแบบเป็น
'
/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 รวมถึงเครื่องหมายขีดนำหน้า เช่น "-d" อาจทำซ้ำได้
ชื่อคลาส: RunCommandTargetPreparer
- ชื่อย่อ: run-command
- ฟังก์ชัน: เรียกใช้คำสั่งเชลล์ที่กำหนดเองก่อนหรือหลังการเรียกใช้โมดูลการทดสอบ
- ตัวเลือก:
- run-command: คำสั่ง adb shell ที่จะเรียกใช้ อาจทำซ้ำได้
- teardown-command: คำสั่ง adb shell ที่จะเรียกใช้ในระยะการสิ้นสุด อาจทำซ้ำได้
คลาสทดสอบ
คลาสทดสอบคือคลาส Trade Federation ที่ใช้ในการเรียกใช้การทดสอบ
<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>
คลาสการทดสอบที่พบบ่อย 3 คลาสมีดังนี้
ชื่อคลาส: GTest
- ชื่อย่อ: gtest
- ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบดั้งเดิมในอุปกรณ์ที่ระบุ
- ตัวเลือก:
- native-test-device-path: เส้นทางในอุปกรณ์ที่มีการทดสอบเนทีฟ
ชื่อคลาส: InstrumentationTest
- ชื่อย่อ: การวัด
- ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการวัดคุมในอุปกรณ์ที่ระบุ
- ตัวเลือก:
- package: ชื่อแพ็กเกจของไฟล์ Manifest ของแอปพลิเคชันทดสอบ Android ที่จะเรียกใช้
- class: ชื่อคลาสทดสอบที่จะเรียกใช้
- method: ชื่อวิธีการทดสอบที่จะเรียกใช้
ชื่อคลาส: AndroidJUnitTest
- ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการวัดคุมในอุปกรณ์ที่ระบุโดยใช้ android.support.test.runner.AndroidJUnitRunner นี่คือวิธีหลักในการเรียกใช้การทดสอบการวัดคุม