إعدادات اختبار معقّدة

قد تتطلب بعض وحدات الاختبار إعدادًا مخصَّصًا وتفصيل خطوات لا يمكن داخل حالة الاختبار نفسها. تشمل الأمثلة المعتادة ما يلي:

  • تثبيت حِزم APK أخرى (بالإضافة إلى حزمة APK الاختبارية)
  • دفع بعض الملفات إلى الجهاز
  • تنفيذ الأوامر (مثل adb shell pm ...)

في السابق، كانت فِرق المكوّنات تلجأ عادةً إلى كتابة اختبار على جانب المضيف لأداء هذه المهام، ما يتطلّب فهم حِزمة Trade Federation ويزيد عادةً من تعقيد وحدة الاختبار.

وبالاستعانة بخدمات CTS، قدَّمنا مفهوم ضبط وحدة الاختبار لدعم مثل هذه المهام، يمكن تحقيق قائمة المهام الشائعة أعلاه من خلال بضعة أسطر من . لتحقيق أكبر قدر من المرونة، يمكنك حتى تنفيذ استهدافك الخاص. المُعِدّ، على النحو المحدّد في ITargetPreparer أو ITargetCleaner، وتهيئتها لاستخدامها في تهيئة وحدة الاختبار.

ملف ضبط وحدة الاختبار هو ملف XML مطلوب تتم إضافته إلى مجلد مصدر الوحدة العلوي ، ويُسمى "AndroidTest.xml". يتّبع ملف XML تنسيق ملف الضبط المستخدَم من قِبل حِزمة اختبار التشغيل الآلي في Trade Federation. في الوقت الحالي، العلامات الرئيسية التي تتم معالجتها من خلال تهيئة وحدة الاختبار هي “target_preparer”. "اختبار" .

جهات إعداد مستهدفة

تحدد علامة "target_preparer"، كما يوحي الاسم، أداة تحضير الهدف. (يُرجى الاطّلاع على ITargetPreparer) توفر طريقة إعداد يتم استدعاؤها قبل تنفيذ وحدة الاختبار للاختبار؛ وإذا كانت الفئة المشار إليها في علامة "target_preparer" أيضًا implements ITargetCleaner، فسيتم استدعاء طريقة تقسيمها بعد الانتهاء من وحدة الاختبار.

لاستخدام إعدادات الوحدة الشائعة المضمَّنة، أضِف ملفًا جديدًا باسم AndroidTest.xml على بمجلد المستوى الأعلى لوحدة الاختبار، وأقوم بتعبئته بما يلي المحتوى:

<?xml version="1.0" encoding="utf-8"?>
<!-- [insert standard AOSP copyright here] -->
<configuration description="Test module config for Foo">
<!-- insert options here -->
</configuration>

على سبيل المثال، يمكننا إضافة علامات الخيارات التالية (في التعليق "إدراج" أعلاه):

    <target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer">
        <option name="run-command" value="settings put secure accessibility_enabled 1" />
        <option name="teardown-command" value="settings put secure accessibility_enabled 0" />
    </target_preparer>

ستؤدي الخيارات إلى ضبط شريط الاختبار على:

  1. قبل استدعاء الوحدة التجريبية، نفِّذ أمر واجهة الأوامر "الإعدادات وضع آمن" إمكانية الوصول: 1 بوصة على الجهاز
  2. بعد الانتهاء من وحدة الاختبار، نفذ أمر Shell "الإعدادات وضع آمن" Accessibility_enabled 0"

في هذا المثال تحديدًا، يتم تفعيل/إيقاف ميزة تسهيل الاستخدام قبل/بعد تنفيذ وحدة الاختبار، على التوالي. من خلال توضيح مثال بسيط، ضرورية لتغطية المزيد من التفاصيل حول كيفية استخدام علامة “option”. كما هو موضّح أعلاه، يمكن أن تحتوي العلامة على سمتَين: الاسم والقيمة. يجب أن تشير سمة الاسم إلى أحد الخيارات التي يقدمها الجاهز.

يعتمد الغرض الدقيق لحقل القيمة على كيفية تعريف المُعِدّ الخيار: يمكن أن يكون سلسلة أو رقمًا أو قيمة منطقية أو حتى مسار ملف. في ما يلي ملخّص لثلاثة من أدوات إعداد الاستهداف الشائعة:

  • اسم الصف: PushFilePreparer

    • short name: Push-file
    • الدالة: يدفع الملفات العشوائية ضمن مجلد حالة الاختبار إلى الوجهة على الجهاز
    • ملاحظات:
      • يمكن لأداة التجهيز هذه الانتقال من مجلد إلى آخر، أو من ملف إلى ملف؛ الذي/التي هو أنه لا يمكنك وضع ملف ضمن مجلد على الجهاز: فيجب حدد اسم الملف الوجهة ضمن هذا المجلد أيضًا
    • الخيارات:
      • push-file: أمر Push-spec ، الذي يحدد الملف المحلي إلى المسار في المكان الذي يجب وضعه فيه على الجهاز. يمكن تكرار هذه السمة. في حال تعدُّد الملفات ليتم دفعها إلى نفس المسار البعيد، سيتم دفع الأحدث.
      • الدفع: (متوقّف نهائيًا) مواصفات دفع، يتم تنسيقها على النحو التالي "/path/to/srcfile.txt->/path/to/destfile.txt" أو /path/to/srcfile.txt->/path/to/destdir/ يمكن تكراره. وقد يرتبط هذا المسار بدليل وحدة الاختبار أو الدليل الخارجي الدليل نفسه.
      • post-push: أمر يتم تشغيله على الجهاز (باستخدام "adb shell <your command>") بعد محاولة إجراء جميع عمليات الدفع. عادةً ما يكون استخدام chmod للأذونات هو الحالة المعتادة.
  • اسم الفئة: InstallApkSetup

    • short name:install-apk
    • الدالة: تدفع ملفات apk العشوائية إلى الوجهة على جهاز
    • الخيارات:
      • اسم-ملف-الاختبار: اسم حزمة APK المطلوب تثبيتها على الجهاز
      • دالة install-arg: الوسيطات الإضافية التي سيتم تمريرها إلى عملية التثبيت مساءً بما في ذلك الشرطة البادئة، على سبيل المثال "-د". يمكن تكرارها
  • اسم الفئة: RunCommandTargetPreparer

    • الاسم المختصر: run-command
    • الدالة: تنفّذ أوامر عشوائية في واجهة المستخدم قبل الاختبار أو بعده تنفيذ الوحدة
    • الخيارات:
      • run-command:أمر adb shell لتشغيله. يمكن تكرارها
      • teardown-command:أمر adb shell لتشغيله أثناء مرحلة البيع. يمكن تكرارها

حصة الاختبار

فئة الاختبار هي فئة الاتحاد التجاري لاستخدامها لتنفيذ الاختبار.

<test class="com.android.tradefed.testtype.AndroidJUnitTest">
  <option name="package" value="android.test.example.helloworld"/>
  <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
</test>

في ما يلي ثلاث فئات اختبار شائعة:

  • اسم الفئة: GTest

    • الاسم المختصر: gtest
    • الوظيفة: اختبار يشغّل حزمة اختبار أصلية على جهاز معيّن
    • الخيارات:
      • Native-test-device-path: هو المسار على الجهاز الذي توجد فيه الاختبارات الأصلية.
  • اسم الفئة: InstrumentationTest

    • الاسم المختصر: الأداة
    • function: اختبار يُشغِّل حِزمة اختبار أدوات القياس على جهاز معيّن
    • الخيارات:
      • package:اسم حزمة البيان لتطبيق اختبار Android المطلوب تشغيله.
      • class:اسم فئة الاختبار المطلوب تشغيله.
      • method:اسم طريقة الاختبار المطلوب تنفيذها.
  • اسم الفئة: AndroidJUnitTest

    • الوظيفة: اختبار الذي يشغّل حزمة اختبار أدوات على حساب معيّن جهاز باستخدام android.support.test.runner.AndroidJUnitRunner هذه هي الطريقة الرئيسية لتنفيذ اختبار قياس حالة التطبيق.