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