إعدادات التصميم البسيط

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