Google มุ่งมั่นที่จะพัฒนาความเท่าเทียมทางเชื้อชาติสำหรับชุมชนคนผิวดำ มาดูกันว่า
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

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

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

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

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

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

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

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

แท็ก“ target_preparer” ตามที่ชื่อแนะนำกำหนดตัวจัดเตรียมเป้าหมาย (ดู ITargetPreparer ) ที่เสนอวิธีการตั้งค่าซึ่งจะได้รับการเรียกก่อนที่จะทำการทดสอบโมดูล และถ้าคลาสที่อ้างอิงในแท็ก“ target_preparer” ใช้ ITargetCleaner ด้วยวิธีการ teardown จะถูกเรียกใช้หลังจากโมดูลทดสอบเสร็จสิ้น

หากต้องการใช้การกำหนดค่าโมดูลทั่วไปในตัวให้เพิ่มไฟล์ใหม่ '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. ก่อนที่จะเรียกใช้งานโมดูลทดสอบให้เรียกใช้คำสั่งเชลล์“ การตั้งค่าทำให้ access access_enabled ปลอดภัย 1” บนอุปกรณ์
  2. หลังจากโมดูลทดสอบเสร็จสิ้นให้เรียกใช้งานคำสั่งเชลล์“ การตั้งค่าทำให้การเข้าถึงที่ปลอดภัย _ เปิดใช้งาน 0”

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

วัตถุประสงค์ของฟิลด์ค่าที่แน่นอนนั้นขึ้นอยู่กับวิธีที่ผู้จัดเตรียมกำหนดตัวเลือก: มันอาจเป็นสตริง, จำนวน, บูลีน, หรือแม้แต่เส้นทางไฟล์เป็นต้นในตัวอย่างข้างต้นชื่อ“ run-command: run-command” หมายถึง เรากำลังตั้งค่าสำหรับตัวเลือก“ run-command” ที่กำหนดโดยผู้จัดเตรียมเป้าหมายด้วยชื่อย่อ“ run-command”; และชื่อ“ run-command: teardown-command” หมายความว่าเรากำลังตั้งค่าสำหรับตัวเลือก“ teardown-command” ที่กำหนดโดยผู้เตรียมเป้าหมายเดียวกันที่มีชื่อย่อ“ run-command” นี่คือบทสรุปของผู้จัดทำเป้าหมายร่วมสามคน

  • ชื่อคลาส: PushFilePreparer

    • ชื่อสั้น : ไฟล์พุช
    • ฟังก์ชั่น : ผลักดันไฟล์โดยพลการภายใต้โฟลเดอร์กรณีทดสอบไปยังปลายทางบนอุปกรณ์
    • หมายเหตุ :
      • ตัวจัดเตรียมนี้สามารถพุชจากโฟลเดอร์หนึ่งไปอีกโฟลเดอร์หนึ่งหรือแต่ละไฟล์ นั่นคือคุณไม่สามารถส่งไฟล์ภายใต้โฟลเดอร์ในอุปกรณ์: คุณต้องระบุชื่อไฟล์ปลายทางภายใต้โฟลเดอร์นั้นเช่นกัน
    • ตัวเลือก :
      • push: ข้อมูลจำเพาะที่จัดรูปแบบเป็น ' /path/to/srcfile.txt->/path/to/destfile.txt ' หรือ ' /path/to/srcfile.txt->/path/to/destdir/ ' อาจจะซ้ำเส้นทางนี้อาจสัมพันธ์กับไดเรกทอรีโมดูลทดสอบหรือไดเรกทอรีออกเอง
      • ** โพสต์พุช: ** คำสั่งให้รันบนอุปกรณ์ (ด้วย ` adb shell <your command> `) หลังจากพยายามพุชทั้งหมดแล้ว กรณีการใช้งานทั่วไปจะใช้ chmod สำหรับการอนุญาต
  • ชื่อคลาส: InstallApkSetup

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

    • ชื่อย่อ: run-command
    • ฟังก์ชั่น: รันคำสั่งเชลล์โดยพลการก่อนหรือหลังการดำเนินการทดสอบโมดูล
    • ตัวเลือก:
      • run-command: คำสั่ง adb shell ที่จะรัน อาจจะซ้ำ
      • คำสั่ง teardown-: adb shell คำสั่งเพื่อเรียกใช้ในระหว่างขั้นตอนการฉีกขาด อาจจะซ้ำ

ชั้นทดสอบ

คลาสการทดสอบคือคลาสสหพันธ์การค้าเพื่อใช้ในการดำเนินการทดสอบ

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

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

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