تكوين اختبار معقد

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

  • تثبيت تطبيقات أخرى (بالإضافة إلى ملف APK الاختباري)
  • دفع بعض الملفات إلى الجهاز
  • أوامر التشغيل (على سبيل المثال adb Shell PM ...)

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

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

تكوين وحدة الاختبار لوحدة اختبار هو ملف XML مطلوب يضاف إلى المجلد المصدر لوحدة المستوى الأعلى، المسمى "AndroidTest.xml". يتبع XML تنسيق ملف التكوين الذي يستخدمه نظام أتمتة اختبار الاتحاد التجاري. العلامات الرئيسية التي يتم التعامل معها حاليًا من خلال تكوينات وحدة الاختبار هي علامتي "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 "الإعدادات تضع إمكانية الوصول الآمن_ممكّنة 0"

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

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

  • اسم الفئة: PushFilePreparer

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

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

    • الاسم المختصر: أمر التشغيل
    • الوظيفة: تنفيذ أوامر الصدفة العشوائية قبل أو بعد تنفيذ وحدة الاختبار
    • خيارات:
      • أمر التشغيل: أمر adb shell للتشغيل. قد تتكرر
      • أمر التفكيك: أمر 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
    • الوظيفة: اختبار يقوم بتشغيل حزمة اختبار أصلية على جهاز معين.
    • خيارات:
      • مسار جهاز الاختبار الأصلي: المسار الموجود على الجهاز حيث توجد الاختبارات الأصلية.
  • اسم الفئة: اختبار الأجهزة

    • الاسم المختصر: الأجهزة
    • الوظيفة: اختبار يقوم بتشغيل حزمة اختبار الأجهزة على جهاز معين
    • خيارات:
      • الحزمة: اسم الحزمة الواضحة لتطبيق اختبار Android المطلوب تشغيله.
      • class: اسم فئة الاختبار المراد تشغيله.
      • الطريقة: اسم طريقة الاختبار المراد تشغيلها.
  • اسم الفئة: AndroidJUnitTest

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