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

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