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

ครั้งแรกที่อ่าน การทดสอบของแอป บน 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. ดู กรอบ / ฐาน / core / ทดสอบ / 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
    

    เคล็ดลับ: คุณใช้ adb shell pm list instrumentation ที่จะหา instrumentations ภายใน 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 ทดสอบของคุณสามารถเป็นการทดสอบการใช้งานหรือการทดสอบเมตริก อย่างไรก็ตาม ขณะนี้ยังไม่รองรับการผสมทั้งสองอย่าง