การทดสอบการใช้เครื่องมือ

โปรดอ่านหัวข้อทดสอบแอปของคุณก่อน ที่ developer.android.com สังเกตว่ามีข้อแตกต่างบางอย่าง วิธีทดสอบการใช้เครื่องมือในการทดสอบแพลตฟอร์ม

กล่าวโดยสรุป การทดสอบการใช้เครื่องมือจะเป็นการดำเนินการทดสอบพิเศษ ที่เปิดผ่านคำสั่ง am instrument โดยที่ กระบวนการสมัครจะเริ่มต้นใหม่ และเริ่มต้นโดยมีบริบทพื้นฐานของแอปพลิเคชัน และเธรดการใช้เครื่องมือจะเริ่มต้นภายใน VM กระบวนการแอปพลิเคชัน บัญชี โค้ดทดสอบเริ่มการเรียกใช้บนเทรดการใช้เครื่องมือนี้และมาพร้อมกับ อินสแตนซ์ Instrumentation ที่ให้สิทธิ์เข้าถึงบริบทของแอปพลิเคชัน และ API เพื่อจัดการกระบวนการของแอปพลิเคชันภายใต้การทดสอบ

หัวข้อสำคัญ

  • ต้องมีการประกาศการใช้เครื่องมือในแพ็กเกจแอปพลิเคชัน โดยมี <instrumentation> ฝังอยู่ใต้แท็ก <manifest> ของไฟล์ Manifest ของแพ็กเกจแอปพลิเคชัน
  • ทางเทคนิคแล้วไฟล์ Manifest ของแพ็กเกจแอปพลิเคชันอาจมี <instrumentation> แม้ว่าจะไม่ได้นิยมใช้ในลักษณะนี้
  • <instrumentation> แต่ละรายการต้องมีสิ่งต่อไปนี้
    • แอตทริบิวต์ android:name: ควรเป็นชื่อของคลาสย่อยของ Instrumentation ที่รวมอยู่ในแอปพลิเคชันทดสอบ ซึ่งโดยทั่วไปจะเป็นการทดสอบ โปรแกรมวิ่งที่ใช้งานอยู่ เช่น android.support.test.runner.AndroidJUnitRunner
    • ต้องกำหนดแอตทริบิวต์ android:targetPackage ควรค่า ตั้งค่าเป็นแพ็กเกจแอปพลิเคชันที่อยู่ระหว่างการทดสอบ

สรุปขั้นตอน

  1. จุดหมายทั่วไปสําหรับการทดสอบที่เจาะลึกกับบริการเฟรมเวิร์กมีดังนี้

    frameworks/base/core/tests/coretests
    frameworks/base/services/tests/servicestests
    

    หากคุณกำลังเพิ่มโมดูลการใช้เครื่องมือใหม่สำหรับคอมโพเนนต์ โปรดดู

  2. ทำตามกฎที่มีอยู่หากคุณเพิ่มการทดสอบลงในหนึ่งใน ตำแหน่งด้านบน หากคุณกำลังตั้งค่าโมดูลการทดสอบใหม่ โปรดทำตาม การตั้งค่า AndroidManifest.xml และ Android.mk ในสถานที่แห่งใดแห่งหนึ่ง สูงกว่า

  3. โปรดดู เฟรมเวิร์ก/ฐาน/แกน/การทดสอบ/coretests/ โปรดทราบว่าบรรทัดต่อไปนี้จะติดตั้งแอปเพิ่มเติม

    <option name="test-file-name" value="FrameworksCoreTests.apk" />
    <option name="test-file-name" value="BstatsTestApp.apk" />
    
  4. อย่าลืมทำเครื่องหมายการทดสอบเป็น @SmallTest, @MediumTest หรือ @LargeTest

  5. สร้างโมดูลทดสอบด้วย m เช่น

    m FrameworksCoreTests
    
  6. ทำการทดสอบโดยทำดังนี้

    • วิธีแก้ไขที่ง่ายที่สุดคือการใช้ เช่น ล่าสุด

      atest FrameworksCoreTests
      
    • หรือสำหรับการทดสอบที่ซับซ้อนมากขึ้น ให้ใช้ Trade Federation Testing Harness

    m tradefed-all
    tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
    
  7. หากไม่ได้ใช้ Tradefed ให้ติดตั้งและทำการทดสอบด้วยตนเอง ดังนี้

    1. ติดตั้ง apk ที่สร้างขึ้น:
    adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
    
    1. ทำการทดสอบด้วยตัวเลือกต่างๆ ดังนี้

      1. การทดสอบทั้งหมดใน apk

        adb shell am instrument -w com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      2. การทดสอบทั้งหมดภายใต้แพ็กเกจ Java ที่เฉพาะเจาะจง

        adb shell am instrument -w -e package android.animation \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      3. การทดสอบทั้งหมดภายใต้คลาสที่เฉพาะเจาะจง

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        
      4. วิธีการทดสอบที่เฉพาะเจาะจง

        adb shell am instrument -w -e class \
          android.animation.AnimatorSetEventsTest#testCancel \
          com.android.frameworks.coretests\
          /android.support.test.runner.AndroidJUnitRunner
        

การทดสอบของคุณสามารถยืนยันอย่างชัดแจ้งว่าผ่านหรือไม่ผ่านโดยใช้ API ของ JUnit ใน นอกจากนี้ ข้อยกเว้นที่ตรวจไม่พบจะทำให้ฟังก์ชันทำงานล้มเหลวด้วย

ในการแสดงเมตริกประสิทธิภาพ โค้ดทดสอบของคุณจะเรียกใช้ Instrumentation#sendStatus เพื่อส่งรายการคู่คีย์-ค่า สิ่งสำคัญที่ควรทราบมีดังนี้

  1. เมตริกอาจเป็นจำนวนเต็มหรือจำนวนทศนิยมก็ได้
  2. ระบบจะทิ้งค่าที่ไม่ใช่ตัวเลข
  3. APK การทดสอบของคุณสามารถเป็นการทดสอบการทำงานหรือการทดสอบตัวชี้วัดก็ได้ อย่างไรก็ตาม ยังไม่รองรับการผสมทั้งคู่ในขณะนี้