اختبارات الأجهزة

أولا قراءة اختبار التطبيق على developer.android.com. لاحظ أن هناك بعض الاختلافات في كيفية استخدام اختبارات الأجهزة في اختبار النظام الأساسي.

وباختصار، اختبار القياس يوفر بيئة تنفيذ الاختبار الخاصة كما أطلقت عبر am instrument الأوامر، حيث يتم إعادة تشغيل عملية التطبيق المستهدفة وتهيئة مع سياق التطبيق الأساسي، ويتم بدء موضوع الأجهزة داخل عملية تطبيق VM. رمز اختبار الخاص بك يبدأ التنفيذ على هذا الموضوع القياس ويرد مع Instrumentation المثال الذي يوفر الوصول إلى سياق تطبيق واجهات برمجة التطبيقات للتلاعب في عملية التطبيق تحت الاختبار.

المفاهيم الرئيسية

  • يجب أن يعلن أحد الأجهزة في حزمة التطبيق، مع <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. انظر الأطر / قاعدة / الأساسية / الاختبارات / 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 للعثور على أدوات القياس داخل 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 واجهات برمجة التطبيقات. بالإضافة إلى ذلك ، فإن أي استثناءات غير معلومة ستؤدي أيضًا إلى فشل وظيفي.

لتنبعث منها مقاييس الأداء، رمز الاختبار يمكن استدعاء Instrumentation#sendStatus لارسال قائمة أزواج مفتاح القيمة. من المهم ملاحظة ما يلي:

  1. يمكن أن تكون المقاييس عددًا صحيحًا أو نقطة عائمة
  2. سيتم تجاهل أي قيم غير رقمية
  3. يمكن أن يكون ملف apk الاختباري إما اختبارات وظيفية أو اختبارات مقاييس ، ومع ذلك فإن المزج بينهما غير مدعوم حاليًا