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

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

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

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

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

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

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

A“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>

ตัวเลือกจะกำหนดค่าสายรัดทดสอบเป็น:

  1. ก่อนที่จะเรียกใช้โมดูลทดสอบ ให้รันคำสั่งเชลล์ "การตั้งค่าทำให้การเข้าถึงได้อย่างปลอดภัย_enabled 1" บนอุปกรณ์
  2. หลังจากโมดูลทดสอบเสร็จสิ้น ให้รันคำสั่งเชลล์ "การตั้งค่าทำให้การเข้าถึงได้อย่างปลอดภัย_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/ ' อาจจะทำซ้ำ เส้นทางนี้อาจสัมพันธ์กับไดเร็กทอรีโมดูลทดสอบหรือไดเร็กทอรีออกเอง
      • ** โพสต์ผลักดัน: คำสั่ง ** เพื่อให้ทำงานบนอุปกรณ์ (ด้วย ` adb shell <your command> `) หลังจากที่ผลักดันทั้งหมดได้รับการพยายาม กรณีการใช้งานทั่วไปจะใช้ chmod สำหรับการอนุญาต
  • ชื่อชั้น: InstallApkSetup

    • ชื่อสั้น: การติดตั้ง apk
    • ฟังก์ชั่น: ดันไฟล์ apk พลภายใต้ลงไปในอุปกรณ์ปลายทาง
    • ตัวเลือก:
      • ทดสอบชื่อไฟล์: ชื่อของ apk ที่จะติดตั้งบนไปยังอุปกรณ์
      • ติดตั้งหาเรื่อง: ข้อโต้แย้งเพิ่มเติมจะถูกส่งผ่านไปยังนคำสั่งติดตั้งรวมทั้งประชั้นนำเช่น“-d" อาจจะซ้ำ.
  • ชื่อชั้น: RunCommandTargetPreparer

    • ชื่อสั้น: เรียกใช้คำสั่ง
    • ฟังก์ชั่น: รันพลคำสั่งเชลล์ก่อนหรือหลังการดำเนินการทดสอบโมดูล
    • ตัวเลือก:
      • เรียกใช้คำสั่ง: คำสั่งเชลล์ adb วิ่ง อาจจะซ้ำ
      • ลบล้างคำสั่ง: คำสั่งเชลล์ 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
    • ฟังก์ชั่น: การทดสอบที่ทำงานแพคเกจการทดสอบพื้นเมืองบนอุปกรณ์ที่กำหนด
    • ตัวเลือก:
      • พื้นเมืองทดสอบอุปกรณ์เส้นทาง: เส้นทางบนอุปกรณ์ที่ทดสอบพื้นเมืองตั้งอยู่
  • ชื่อชั้น: InstrumentationTest

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

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