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

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

  • تثبيت حِزم 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: (ميزة متوقّفة نهائيًا) مواصفات دفع، بتنسيق '/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
    • الدالة: تدفع ملفات apk العشوائية إلى الوجهة على الجهاز
    • الخيارات:
      • اسم-الملف-الاختباري: اسم حزمة APK المطلوب تثبيتها على الجهاز.
      • وسيطة التثبيت: وسيطات إضافية يتم تمريرها إلى الأمر pm install ، بما في ذلك الشرطة المائلة البادئة، مثل "-d". قد يتم تكرار الإجراء
  • اسم الفئة: RunCommandTargetPreparer

    • short name: run-command
    • دالة: تنفِّذ أوامر قشرة عشوائية قبل تنفيذ اختبار الوحدة أو بعده
    • options:
      • 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: اختبار يُشغِّل حِزمة اختبار أدوات القياس على جهاز معيّن
    • الخيارات:
      • الحزمة:اسم حزمة البيان لتطبيق اختبار Android المطلوب تشغيله.
      • class: اسم فئة الاختبار المطلوب تنفيذه.
      • method:اسم طريقة الاختبار المطلوب تنفيذها.
  • اسم الفئة: AndroidJUnitTest

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