اختبارات قياس حالة التطبيق

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

لإصدار مقاييس الأداء، يمكن لرمز الاختبار استدعاء Instrumentation#sendStatus لإرسال قائمة بأزواج المفتاح/القيمة. تجدر الإشارة إلى ما يلي:

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