โมดูลทดสอบบางรายการอาจต้องมีการตั้งค่าที่กำหนดเองและแยกขั้นตอนบางส่วนที่ไม่สามารถ ดำเนินการภายในกรอบการทดสอบได้ ตัวอย่างทั่วไป ได้แก่
- ติดตั้ง apk อื่นๆ (นอกเหนือจาก apk ทดสอบ)
- พุชไฟล์บางไฟล์ไปยังอุปกรณ์
- เรียกใช้คําสั่ง (เช่น adb shell pm ...)
ที่ผ่านมา ทีมคอมโพเนนต์มักจะใช้การเขียนการทดสอบฝั่งโฮสต์ ดำเนินการดังกล่าว ซึ่งต้องอาศัยความเข้าใจในการใช้ประโยชน์จากสหพันธ์การค้า และโดยปกติจะเพิ่มความซับซ้อนของโมดูลทดสอบ
เรานำแนวคิดการกำหนดค่าโมดูลทดสอบมาใช้จาก CTS เพื่อรองรับงานดังกล่าว รายการงานทั่วไปข้างต้นจะทําได้ด้วยการกําหนดค่าเพียงไม่กี่บรรทัด เพื่อความยืดหยุ่นสูงสุด คุณสามารถใช้เป้าหมายของคุณเอง เตรียมพร้อมตามที่ ITargetPreparer กำหนด หรือ ITargetCleaner และกำหนดค่าเพื่อใช้ในการกำหนดค่าโมดูลการทดสอบของคุณเอง
การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นที่เพิ่มไว้ทางด้านบน โฟลเดอร์แหล่งที่มาของโมดูลระดับ ชื่อว่า "AndroidTest.xml" โดย XML มีรูปแบบดังต่อไปนี้ ของไฟล์การกำหนดค่าที่ใช้โดยระบบควบคุมการทำงานอัตโนมัติสำหรับการทดสอบของสมาพันธ์การค้า ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือ “target_preparer” และ "ทดสอบ" แท็กทั้งหมด.
ผู้เตรียมข้อมูลเป้าหมาย
แท็ก “target_preparer” เป็นชื่อที่ใช้ระบุตัวเตรียมเป้าหมาย (โปรดดู ITargetPreparer) ที่เสนอวิธีการตั้งค่า ซึ่งจะเรียกใช้ก่อนที่จะเรียกใช้โมดูลทดสอบ สำหรับการทดสอบ และหากคลาสที่อ้างอิงในแท็ก “target_preparer” เช่นเดียวกัน implements 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>
ตัวเลือกจะกําหนดค่าชุดทดสอบให้ทําสิ่งต่อไปนี้
- before test module is invoked, execute shell command “settings put secure accessibility_enabled 1” on device
- หลังจากโมดูลทดสอบเสร็จแล้ว ให้เรียกใช้คำสั่งเชลล์ "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
- function: พุชไฟล์ apk ที่กำหนดเองไปยังปลายทางใน อุปกรณ์
- options:
- test-file-name: ชื่อของ APK ที่จะติดตั้ง อุปกรณ์
- install-arg: อาร์กิวเมนต์เพิ่มเติมที่จะส่งไปยัง pm install คำสั่งโดยรวมเครื่องหมายขีดกลางนำหน้า เช่น “-d" อาจแสดงซ้ำ
ชื่อคลาส: RunCommandTargetPreparer
- ชื่อย่อ: run-command
- function: เรียกใช้คำสั่ง Shell ที่กำหนดเองก่อนหรือหลังการทดสอบ การดำเนินการของโมดูล
- options:
- run-command: คำสั่ง Shell adb ที่จะเรียกใช้ อาจแสดงซ้ำ
- teardown-command: คำสั่งเชลล์ adb ที่จะเรียกใช้ระหว่างเฟส teardown อาจแสดงซ้ำ
คลาสทดสอบ
คลาสทดสอบคือคลาส 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
- function: การทดสอบที่เรียกใช้แพ็กเกจทดสอบแบบเนทีฟในอุปกรณ์ที่ระบุ
- ตัวเลือกดังต่อไปนี้
- native-test-device-path: เส้นทางในอุปกรณ์ที่มีการทดสอบเนทีฟ
ชื่อคลาส: InstrumentationTest
- ชื่อย่อ: เครื่องมือวัด
- ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการใช้เครื่องมือในอุปกรณ์ที่กำหนด
- options:
- package: ชื่อแพ็กเกจไฟล์ Manifest ของแอปพลิเคชันทดสอบ Android ที่จะเรียกใช้
- class: ชื่อคลาสทดสอบที่จะเรียกใช้
- method: ชื่อเมธอดทดสอบที่จะเรียกใช้
ชื่อชั้นเรียน: AndroidJUnitTest
- function: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการวัดคุมในอุปกรณ์ที่ระบุโดยใช้ android.support.test.runner.AndroidJUnitRunner ซึ่งเป็นวิธีหลักในการเรียกใช้การทดสอบการวัดคุม