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

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