โมดูลการทดสอบบางรายการอาจต้องมีการตั้งค่าและขั้นตอนการเลิกใช้งานที่กําหนดเอง ซึ่งทําภายในเฟรมทดสอบไม่ได้ ตัวอย่างทั่วไปอาจรวมถึง
- ติดตั้ง APK อื่นๆ (นอกเหนือจาก APK ทดสอบ)
- พุชไฟล์บางไฟล์ไปยังอุปกรณ์
- เรียกใช้คําสั่ง (เช่น adb shell pm ...)
ที่ผ่านมา ทีมคอมโพเนนต์มักจะเขียนการทดสอบฝั่งโฮสต์เพื่อดำเนินการดังกล่าว ซึ่งต้องใช้ความเข้าใจใน Harness ของ Trade Federation และมักจะเพิ่มความซับซ้อนของโมดูลทดสอบ
เราได้เปิดตัวแนวคิดของการกำหนดค่าโมดูลการทดสอบเพื่อรองรับงานลักษณะนี้จาก 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>
ตัวเลือกจะกําหนดค่าชุดทดสอบให้ทําสิ่งต่อไปนี้
- ก่อนที่จะเรียกใช้โมดูลทดสอบ ให้เรียกใช้คำสั่ง Shell "การตั้งค่า" ใส่การเข้าถึง ที่ปลอดภัย_เปิดใช้ 1” ในอุปกรณ์
- หลังจากโมดูลทดสอบเสร็จสิ้น ให้เรียกใช้คำสั่ง Shell "การตั้งค่าใส่ Secureaccessibility_enabled 0"
ในตัวอย่างนี้ ระบบจะเปิด/ปิดการช่วยเหลือพิเศษก่อน/หลังการเรียกใช้ข้อบังคับการทดสอบตามลำดับ จากตัวอย่างง่ายๆ นี้ คุณจำเป็นต้องพูดถึงรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้แท็ก "option" ดังที่แสดงด้านบน แท็กอาจมีแอตทริบิวต์ 2 รายการ ได้แก่ ชื่อและค่า แอตทริบิวต์ชื่อต้องอ้างอิงถึงตัวเลือกใดตัวเลือกหนึ่งที่ผู้จัดทำเสนอ
วัตถุประสงค์ที่แน่นอนของช่องค่าจะขึ้นอยู่กับวิธีที่ผู้เตรียมกำหนดกำหนดตัวเลือก ซึ่งอาจเป็นสตริง ตัวเลข บูลีน หรือแม้แต่เส้นทางของไฟล์ก็ได้ ต่อไปนี้เป็นข้อมูลสรุปเกี่ยวกับเครื่องมือเตรียมเป้าหมาย 3 รายการที่พบบ่อย
ชื่อคลาส: PushFilePreparer
- ชื่อย่อ: push-file
- function: พุชไฟล์ที่กำหนดเองในโฟลเดอร์ Test Case ไปยังปลายทางในอุปกรณ์
- notes:
- เครื่องมือเตรียมความพร้อมนี้จะพุชจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่ง หรือจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง กล่าวคือ คุณจะพุชไฟล์ที่อยู่ในโฟลเดอร์ในอุปกรณ์ไม่ได้ คุณต้องระบุชื่อไฟล์ปลายทางในโฟลเดอร์นั้นด้วย
- options:
- push-file: ข้อมูลจำเพาะการพุชที่ระบุไฟล์ในเครื่องไปยังเส้นทางที่ควรพุชในอุปกรณ์ ใช้ซ้ำได้ หากมีการกําหนดค่าไฟล์หลายไฟล์ให้พุชไปยังเส้นทางระยะไกลเดียวกัน ระบบจะพุชไฟล์ล่าสุด
- push: (เลิกใช้งานแล้ว) รูปแบบ push-spec ในรูปแบบ '
/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 ที่กำหนดเองไปยังปลายทางในอุปกรณ์
- ตัวเลือก:
- test-file-name: ชื่อของ apk ที่จะติดตั้งในอุปกรณ์
- install-arg: อาร์กิวเมนต์เพิ่มเติมที่จะส่งไปยังคําสั่ง pm install รวมถึงขีดกลางนำหน้า เช่น "-d" อาจซ้ำกัน
ชื่อคลาส: RunCommandTargetPreparer
- ชื่อย่อ: run-command
- function: เรียกใช้คำสั่ง Shell ที่กำหนดเองก่อนหรือหลังการดำเนินการของโมดูลทดสอบ
- options:
- run-command: คำสั่ง Shell adb ที่จะเรียกใช้ อาจซ้ำกัน
- 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
- ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบแบบเนทีฟในอุปกรณ์ที่กำหนด
- options:
- native-test-device-path: เส้นทางในอุปกรณ์ที่มีทดสอบเนทีฟ
ชื่อคลาส: InstrumentationTest
- ชื่อย่อ: เครื่องมือวัด
- function: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการใช้เครื่องมือในอุปกรณ์ที่ระบุ
- options:
- แพ็กเกจ: ชื่อแพ็กเกจ Manifest ของแอปพลิเคชันทดสอบ Android ที่จะเรียกใช้
- class: ชื่อคลาสทดสอบที่จะเรียกใช้
- method: ชื่อเมธอดทดสอบที่จะเรียกใช้
ชื่อคลาส: AndroidJUnitTest
- function: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการวัดคุมในอุปกรณ์ที่ระบุโดยใช้ android.support.test.runner.AndroidJUnitRunner ซึ่งเป็นวิธีหลักในการเรียกใช้การทดสอบการวัดคุม