تكوين بناء بسيط

يجب أن تحتوي كل وحدة اختبار جديدة على ملف تكوين لتوجيه نظام الإنشاء باستخدام البيانات التعريفية للوحدة وتبعيات وقت الترجمة وتعليمات التعبئة. يستخدم Android الآن نظام البناء Soong لتكوين اختبار أبسط.

يستخدم Soong ملفات 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 بنفس شهادة النظام الأساسي الأساسي. يعد ذلك ضروريًا إذا كان الاختبار الخاص بك يستخدم إذنًا محميًا بالتوقيع أو واجهة برمجة التطبيقات (API). لاحظ أن هذا مناسب للاختبار المستمر للمنصة، ولكن لا ينبغي استخدامه في وحدات اختبار CTS. لاحظ أن هذا المثال يستخدم إعداد الشهادة هذا فقط لغرض التوضيح: لا يحتاج رمز الاختبار الخاص بالمثال فعليًا إلى توقيع ملف APK الاختباري باستخدام شهادة النظام الأساسي الخاصة.

إذا كنت تكتب أداة للمكون الخاص بك الموجود خارج خادم النظام، أي أنه يتم تعبئته بشكل أو بآخر مثل تطبيق APK عادي، باستثناء أنه مدمج في صورة النظام وقد يكون تطبيقًا مميزًا، فمن المحتمل أن تكون أجهزتك أن تستهدف حزمة التطبيق (انظر القسم أدناه حول البيان) الخاص بالمكون الخاص بك. في هذه الحالة، قد يكون لملف إنشاء التطبيق الخاص بك إعداد 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 بالملف config.

    auto_gen_config: true

يشير إعداد auto_gen_config إلى ما إذا كان سيتم إنشاء تكوين الاختبار تلقائيًا أم لا. إذا لم يكن AndroidTest.xml موجودًا بجوار Android.bp ، فلن يلزم تعيين هذه السمة إلى true بشكل صريح.

    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 .