يُرجى أولاً الاطّلاع على مقالة اختبار تطبيقك. على developer.android.com. لاحظ أن هناك بعض الاختلافات في كيفية استخدام اختبارات قياس حالة التطبيق في اختبار النظام الأساسي.
باختصار، يوفر اختبار قياس حالة التطبيق عملية تنفيذ اختبارية خاصة
بيئة التشغيل كما يتم تشغيلها عبر الأمر am instrument
، حيث تم استهداف
إعادة تشغيل عملية التطبيق وتهيئتها بسياق التطبيق الأساسي،
ويتم بدء سلسلة أدوات لقياس حالة التطبيق داخل الجهاز الافتراضي (VM) الخاص بعملية التطبيق.
يبدأ تنفيذ الرمز الاختباري على سلسلة تعليمات الأدوات هذه ويتم توفيره مع
مثيل Instrumentation
يوفّر إمكانية الوصول إلى سياق التطبيق
وواجهات برمجة التطبيقات لمعالجة عملية التطبيق قيد الاختبار.
المفاهيم الرئيسية
- يجب الإعلان عن أداة في حزمة التطبيق، مع
<instrumentation>
علامة مدمجة ضمن العلامة<manifest>
لبيان حزمة التطبيق. - قد يحتوي بيان حزمة تطبيق تقنيًا على العديد
علامات
<instrumentation>
، على الرغم من أنّه لا يشيع استخدامها بهذه الطريقة. - يجب أن يحتوي كل
<instrumentation>
على:- سمة
android:name
: يجب أن تكون اسم فئة فرعيةInstrumentation
التي يتم تضمينها في طلب الاختبار، وهو عادةً الاختبار المستخدم الجديد، مثل:android.support.test.runner.AndroidJUnitRunner
- يجب تحديد السمة
android:targetPackage
. يجب أن على حزمة التطبيق قيد الاختبار.
- سمة
ملخّص الخطوات
في ما يلي الوجهات الشائعة لإجراء الاختبارات المشروطة على خدمات إطار العمل:
frameworks/base/core/tests/coretests frameworks/base/services/tests/servicestests
إذا كنت بصدد إضافة وحدة أدوات جديدة للمكون، فراجع
باتباع الاصطلاح الحالي إذا كنت تضيف اختبارات إلى أحد المواقع أعلاه. إذا كنت بصدد إعداد وحدة اختبار جديدة، يُرجى اتباع إعداد
AndroidManifest.xml
وAndroid.mk
في أحد المواقع الجغرافية أعلى منعرض frameworks/base/core/tests/coretests/ للحصول على مثال. لاحظ أن الأسطر التالية تثبّت تطبيقات إضافية:
<option name="test-file-name" value="FrameworksCoreTests.apk" /> <option name="test-file-name" value="BstatsTestApp.apk" />
لا تنسَ وضع علامة
@SmallTest
أو@MediumTest
أو على الاختبار@LargeTest
إنشاء وحدة الاختبار باستخدام m، على سبيل المثال:
m FrameworksCoreTests
إجراء الاختبارات:
أبسط حل هو استخدام تصديق على النحو التالي:
atest FrameworksCoreTests
أو لإجراء اختبارات أكثر تعقيدًا، استخدم حزام اختبار الاتحاد التجاري:
m tradefed-all tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
في حال عدم استخدام Tradefed، عليك تثبيت الاختبارات يدويًا وتنفيذها:
- تثبيت ملف apk الذي تم إنشاؤه:
adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
يمكنك إجراء الاختبارات باستخدام خيارات مختلفة:
جميع الاختبارات في ملف apk
adb shell am instrument -w com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
جميع الاختبارات ضمن حزمة Java محددة
adb shell am instrument -w -e package android.animation \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
جميع الاختبارات ضمن فئة محددة
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
طريقة اختبار محددة
adb shell am instrument -w -e class \ android.animation.AnimatorSetEventsTest#testCancel \ com.android.frameworks.coretests\ /android.support.test.runner.AndroidJUnitRunner
يمكن أن يقدّم الاختبار تأكيدًا صريحًا على اجتياز الاختبار أو تعذّر اجتيازه باستخدام واجهات برمجة تطبيقات JUnit
. بوصة
بالإضافة إلى ذلك، ستؤدي أي استثناءات غير مرصودة أيضًا إلى فشل وظيفي.
لإصدار مقاييس الأداء، يمكن لرمز الاختبار استدعاء
Instrumentation#sendStatus
لإرسال قائمة بأزواج المفتاح/القيمة. تجدر الإشارة إلى ما يلي:
- يمكن أن تكون المقاييس عددًا صحيحًا أو نقطة عائمة
- فسيتم تجاهل أي قيم غير رقمية
- ومع ذلك، يمكن أن تكون حزمة APK التجريبية إما اختبارات وظيفية أو اختبارات مقاييس، مزج الاثنين غير متاح حاليًا