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

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

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

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

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

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

مُعدّو التقارير المستهدَفون

تحدِّد علامة target_preparer، كما يشير اسمها، عنصر إعداد هدف (راجِع ITargetPreparer) الذي يقدّم طريقة إعداد يتمّ استدعاؤها قبل تنفيذ وحدة الاختبار للاختبار. وإذا كانت الفئة المُشار إليها في علامة target_preparer تُنفِّذ أيضًا 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. قبل استدعاء وحدة الاختبار، نفِّذ الأمر shell "settings put secure accessibility_enabled 1" على الجهاز.
  2. بعد الانتهاء من اختبار الوحدة، نفِّذ الأمر shell "settings put secure accessibility_enabled 0".

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

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

  • اسم الفئة: PushFilePreparer

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

    • الاسم القصير:install-apk
    • function: تُرسِل ملفات APK عشوائية ضمن الوجهة على الجهاز
    • الخيارات:
      • اسم-الملف-الاختباري: اسم حزمة APK المطلوب تثبيتها على الجهاز.
      • وسيطة التثبيت: وسيطات إضافية يتم تمريرها إلى الأمر pm install ، بما في ذلك الشرطة المائلة البادئة، مثل "-d". قد يتم تكرار الإجراء
  • اسم الفئة: RunCommandTargetPreparer

    • الاسم المختصر: run-command
    • function: تنفِّذ أوامر قشرة عشوائية قبل تنفيذ اختبار الوحدة أو بعده
    • الخيارات:
      • run-command: أمر shell في أداة ADB المطلوب تنفيذه قد يتم تكرار الإجراء
      • teardown-command: أمر shell في adb المطلوب تنفيذه خلال مرحلة الإزالة قد يتم تكرار الإجراء

فئة الاختبار

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

<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
    • function: اختبار يُشغِّل حزمة اختبار أصلية على جهاز معيّن.
    • الخيارات:
      • native-test-device-path:المسار على الجهاز الذي تتوفّر فيه الاختبارات الأصلية
  • اسم الفئة: InstrumentationTest

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

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