การกำหนดค่าการทดสอบที่ซับซ้อน

โมดูลการทดสอบบางรายการอาจต้องมีการตั้งค่าและขั้นตอนการเลิกใช้งานที่กําหนดเอง ซึ่งทําภายในเฟรมทดสอบไม่ได้ ตัวอย่างทั่วไปอาจรวมถึง

  • ติดตั้ง apk อื่นๆ (นอกเหนือจาก apk ทดสอบ)
  • พุชไฟล์บางส่วนไปยังอุปกรณ์
  • เรียกใช้คำสั่ง (เช่น adb shell pm ...)

ที่ผ่านมา ทีมคอมโพเนนต์มักจะใช้การเขียนการทดสอบฝั่งโฮสต์ ดำเนินการดังกล่าว ซึ่งต้องอาศัยความเข้าใจในการใช้ประโยชน์จากสหพันธ์การค้า และโดยปกติจะเพิ่มความซับซ้อนของโมดูลทดสอบ

การยืมจาก CTS เราได้เปิดตัวแนวคิดของการกำหนดค่าโมดูลการทดสอบเพื่อสนับสนุน ดังกล่าว รายการงานทั่วไปข้างต้นสามารถทำได้ด้วยแท็กเพียง 2-3 บรรทัด การกำหนดค่า เพื่อความยืดหยุ่นสูงสุด คุณสามารถใช้เป้าหมายของคุณเอง เตรียมพร้อมตามที่ ITargetPreparer กำหนด หรือ ITargetCleaner และกำหนดค่าให้มีการใช้ในการกำหนดค่าโมดูลการทดสอบของคุณเอง

การกำหนดค่าโมดูลทดสอบสำหรับโมดูลทดสอบคือไฟล์ XML ที่จำเป็นที่เพิ่มไว้ทางด้านบน โฟลเดอร์แหล่งที่มาของโมดูลระดับ ชื่อว่า "AndroidTest.xml" โดย XML มีรูปแบบดังต่อไปนี้ ของไฟล์การกำหนดค่าที่ใช้โดยระบบควบคุมการทำงานอัตโนมัติสำหรับการทดสอบของสมาพันธ์การค้า ปัจจุบันแท็กหลักที่จัดการผ่านการกำหนดค่าโมดูลทดสอบคือแท็ก "target_preparer" และ "test"

ผู้เตรียมเป้าหมาย

แท็ก “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>

ตัวอย่างเช่น เราอาจเพิ่มแท็กตัวเลือกต่อไปนี้ (ที่ความคิดเห็น "แทรก" ด้านบน)

    <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. before test module is invoked, execute shell command “settings put secure accessibility_enabled 1” on device
  2. หลังจากโมดูลทดสอบเสร็จสิ้น ให้เรียกใช้คำสั่ง Shell "การตั้งค่าใส่ความปลอดภัย Accessibility_enabled 0 นิ้ว

ในตัวอย่างนี้ จะมีการเปิด/ปิดใช้การเข้าถึงก่อน/หลัง การดำเนินการของโมดูลทดสอบตามลำดับ ตัวอย่างง่ายๆ ที่สาธิตให้เห็นก็คือ ที่จำเป็นต่อการอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับวิธีใช้แท็ก "ตัวเลือก" ดังที่แสดงด้านบน แท็กสามารถมีแอตทริบิวต์ได้ 2 รายการ ได้แก่ ชื่อ ค่า แอตทริบิวต์ name ต้องอ้างอิงถึง หนึ่งในตัวเลือกที่ผู้จัดเตรียมเสนอ

วัตถุประสงค์ที่แน่นอนของฟิลด์ค่าจะขึ้นอยู่กับวิธีที่ผู้เตรียมกำหนด ตัวเลือก: อาจเป็นสตริง ตัวเลข บูลีน หรือแม้กระทั่งเส้นทางของไฟล์ สรุปของผู้เตรียมเป้าหมายทั่วไป 3 ข้อมีดังนี้

  • ชื่อคลาส: PushFilePreparer

    • ชื่อย่อ: push-file
    • ฟังก์ชั่น: พุชไฟล์ที่กำหนดเองภายใต้โฟลเดอร์กรอบการทดสอบไปยัง ปลายทางบนอุปกรณ์
    • notes:
      • เครื่องมือเตรียมการนี้สามารถพุชจากโฟลเดอร์หนึ่งไปอีกโฟลเดอร์หนึ่ง หรือหนึ่งไฟล์ไปยังไฟล์ นั่น คุณจะพุชไฟล์ไว้ในโฟลเดอร์ในอุปกรณ์ไม่ได้ และต้องดำเนินการต่อไปนี้ ระบุชื่อไฟล์ปลายทางในโฟลเดอร์นั้นด้วย
    • ตัวเลือก ได้แก่
      • 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 ที่กำหนดเองไปยังปลายทางใน อุปกรณ์
    • ตัวเลือกดังต่อไปนี้
      • 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
    • ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบแบบเนทีฟในอุปกรณ์ที่กำหนด
    • ตัวเลือกดังต่อไปนี้
      • native-test-device-path: เส้นทางในอุปกรณ์ที่มีการทดสอบเนทีฟ
  • ชื่อคลาส: InstrumentationTest

    • ชื่อย่อ: การวัด
    • ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการใช้เครื่องมือในอุปกรณ์ที่กำหนด
    • ตัวเลือกดังต่อไปนี้
      • แพ็กเกจ: ชื่อแพ็กเกจ Manifest ของแอปพลิเคชันทดสอบ Android ที่จะเรียกใช้
      • class: ชื่อคลาสการทดสอบที่จะเรียกใช้
      • method: ชื่อวิธีทดสอบที่จะเรียกใช้
  • ชื่อคลาส: AndroidJUnitTest

    • ฟังก์ชัน: การทดสอบที่เรียกใช้แพ็กเกจการทดสอบการใช้เครื่องมือใน อุปกรณ์ที่ใช้ android.support.test.runner.AndroidJUnitRunner นี่คือวิธีหลักในการดำเนินการทดสอบการใช้เครื่องมือ