การทดสอบเครื่องมือวัด

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

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

แนวคิดหลัก

  • เครื่องมือวัดต้องประกาศในแพ็คเกจแอปพลิเคชัน โดยมีแท็ก <instrumentation> ซ้อนอยู่ใต้แท็ก <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. ดู frameworks/base/core/tests/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. เรียกใช้การทดสอบ:

    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
        

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

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

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