يجب أن تحتوي كل وحدة اختبار جديدة على ملف إعداد لتوجيه نظام التصميم مع البيانات الوصفية للوحدة، وتبعيات وقت التجميع، وتعليمات التعبئة. يستخدم Android الآن نظام تصميم Soong لتقديم إعدادات الاختبار.
يستخدم تطبيق Sung ملف Blueprint أو ملفات .bp
، وهو ملف تعريفي بسيط يشبه JSON.
أوصاف الوحدات المراد إنشاؤها. يحل هذا التنسيق محل النظام المستند إلى الصنع.
المستخدمة في الإصدارات السابقة. راجِع ملفات Soong المرجعية
في لوحة بيانات عملية الدمج المستمر للاطّلاع على التفاصيل الكاملة.
لاستيعاب الاختبار المخصص أو استخدام مجموعة اختبار التوافق مع Android (CTS)، عليك اتباع إعدادات الاختبار المعقد بدلاً من ذلك.
مثال
تأتي الإدخالات أدناه من مثال ملف إعداد Blueprint هذا: /platform_testing/tests/example/instrumentation/Android.bp
يتم تضمين لقطة هنا لتسهيل الأمر:
android_test {
name: "HelloWorldTests",
srcs: ["src/**/*.java"],
sdk_version: "current",
static_libs: ["androidx.test.runner"],
certificate: "platform",
test_suites: ["device-tests"],
}
يُرجى العلم أنّ بيان android_test
في البداية يشير إلى أنّ هذا اختبار.
بينما يشير تضمين android_app
إلى أن ذلك إصدار بدلاً من ذلك
طرد.
الإعدادات
تشرح الإعدادات التالية:
name: "HelloWorldTests",
يجب ضبط الإعداد name
عند تحديد نوع الوحدة android_test
.
(في بداية الجزء). فهي تعطي اسمًا للوحدة النمطية الخاصة بك،
سيتم تسمية حزمة APK بالطريقة نفسها مع إضافة اللاحقة .apk
، على سبيل المثال وهو في هذه الحالة،
يكون اسم ملف APK التجريبي الناتج HelloWorldTests.apk
. بالإضافة إلى ذلك،
تحدد اسمًا مستهدفًا لوحدتك، بحيث يمكنك استخدام make [options]
<HelloWorldTests>
لإنشاء وحدة الاختبار وجميع تبعياتها.
static_libs: ["androidx.test.runner"],
يتم من خلال الإعداد static_libs
توجيه نظام التصميم إلى دمج المحتوى.
الوحدات المُعنونة في ملف APK الناتج للوحدة الحالية. هذا يعني أنّ
من المتوقّع أن تنتج عن كل وحدة معنيّة ملف .jar
، وسيكون محتواه
وتُستخدم لحل مراجع مسار الفئة أثناء وقت التجميع، بالإضافة إلى
مدمجة في ملف apk الناتج.
تم تصميم وحدة androidx.test.runner
مسبقًا للاستخدام في AndroidX Test Runner.
المكتبة التي تتضمن أداة تشغيل الاختبار AndroidJUnitRunner
يتوافق "AndroidJUnitRunner
" مع إطار عمل اختبار JUnit4 وتم استبداله.
InstrumentationTestRunner
في Android 10. مزيد من المعلومات
حول اختبار تطبيقات Android في اختبار التطبيقات على Android.
إذا كنت تقوم بإنشاء وحدة أداة جديدة، فيجب أن تبدأ دائمًا
مكتبة androidx.test.runner
كمشغِّل الاختبار. شجرة مصادر المنصة
تتضمّن أيضًا أُطر عمل اختبار مفيدة أخرى، مثل ub-uiautomator
"mockito-target
" و"easymock
" وغير ذلك
certificate: "platform",
يوجِّه الإعداد certificate
نظام الإصدار إلى توقيع حزمة APK بالطريقة نفسها.
الشهادة كمنصة أساسية. يجب إجراء ذلك إذا كان الاختبار يستخدم توقيعًا.
إذن محمي أو واجهة برمجة تطبيقات لاحظ أن هذا يتناسب مع نظام التشغيل المستمر
لاختباره، ولكن لا يُستخدم في وحدات اختبار CTS. لاحظ أن هذا المثال
يستخدم إعداد الشهادة هذا لغرض التوضيح فقط: رمز الاختبار
في هذا المثال، لا يلزم توقيع ملف apk الاختباري باستخدام
شهادة منصة خاصة.
إذا كنت تكتب أداة للمكون التي تتواجد خارج
خادم نظام التشغيل، أي أنه يتم تغليفه بشكل أكبر أو أقل مثل حزمة apk عادية،
إلا أنه مدمَج في صورة النظام وقد يكون تطبيقًا ذا امتياز،
مدى استهداف أداتك لحزمة التطبيق (انظر أدناه
حول البيان) الخاص بالمكون. في هذه الحالة، قد لا يستخدم تطبيقك
قد يحتوي ملف makefile على إعداد certificate
خاص، بالإضافة إلى الأدوات
الوحدة بنفس الإعداد. ويرجع ذلك إلى أنّ استهداف
أداة الاختبار في التطبيق قيد الاختبار، يجب توقيع ملف APK التجريبي وملف APK للتطبيق
بالشهادة نفسها.
في حالات أخرى، لا تحتاج إلى هذا الإعداد على الإطلاق: نظام التصميم
سيوقعون عليه ببساطة باستخدام شهادة مضمنة افتراضية، استنادًا إلى إصدار
الصيغة، ويطلق عليها عادةً dev-keys
.
test_suites: ["device-tests"],
يسهّل الإعداد test_suites
العثور على الاختبار بواسطة منصة التجارة.
مفعِّل اختبار الاتحاد. يمكن إضافة أجنحة أخرى هنا مثل CTS بحيث
اختبار الفرضية.
${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
الإعدادات الاختيارية
تحصل الإعدادات الاختيارية التالية على تفسير:
test_config: "path/to/hello_world_test.xml"
يوجّه الإعداد test_config
إلى نظام الإصدار الذي يحتاج هدف الاختبار إلى
الإعدادات المحددة. بشكل تلقائي، يتم ضبط AndroidTest.xml
بجانب Android.bp
المرتبطة بالتهيئة.
auto_gen_config: true
يحدِّد الإعداد auto_gen_config
ما إذا كان سيتم إنشاء إعدادات الاختبار أم لا.
تلقائيًا. في حال عدم توفّر AndroidTest.xml
بجانب Android.bp
، سيتم
لا يلزم تعيين السمة على "صواب" بشكل صريح.
require_root: true
يوجِّه الإعداد require_root
نظام الإصدار لإضافة RootTargetPreparer.
إلى إعدادات الاختبار التي يتم إنشاؤها تلقائيًا. يضمن ذلك تنفيذ الاختبار باستخدام الجذر.
الأذونات.
test_min_api_level: 29
يوجِّه الإعداد test_min_api_level
نظام الإصدار إلى إضافة ما يلي:
MinApiLevelModuleController على إعدادات الاختبار التي يتم إنشاؤها تلقائيًا. عند التداول
ينفِّذ الاتحاد الأوروبي إعدادات الاختبار، وسيتم تخطّي الاختبار إذا كانت خاصية الجهاز.
من ro.product.first_api_level
< test_min_api_level