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

اقرأ أولاً اختبار تطبيقك على موقع 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. كافة الاختبارات ضمن حزمة جافا محددة

        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 الاختباري إما اختبارات وظيفية أو اختبارات مقاييس، إلا أن المزج بين الاثنين غير مدعوم حاليًا