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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

  • تثبيت تطبيقات أخرى (بالإضافة إلى اختبار 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>

كمثال ، يمكننا إضافة علامات الخيار التالية (في تعليق "insert" أعلاه):

    <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"

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

يعتمد الغرض الدقيق لحقل القيمة على كيفية تعريف المُعد للخيار: يمكن أن يكون سلسلة أو رقمًا أو منطقيًا أو حتى مسار ملف وما إلى ذلك. أننا نضع قيمة للخيار "run-command" الذي حدده معد الهدف بالاسم المختصر "run-command" ؛ واسم "run-command: teardown-command" يعني أننا نضع قيمة للخيار "teardown-command" الذي حدده أيضا نفس مُعد الهدف بالاسم المختصر "run-command". فيما يلي ملخص لثلاثة معدي الهدف المشترك:

  • اسم الفئة: PushFilePreparer

    • الاسم المختصر : ملف دفع
    • الوظيفة : يدفع الملفات التعسفية الموجودة في مجلد حالة الاختبار إلى الوجهة على الجهاز
    • ملاحظات :
      • يمكن لهذا المُعد الدفع من مجلد إلى مجلد ، أو من ملف إلى ملف ؛ أي أنه لا يمكنك دفع ملف أسفل مجلد على الجهاز: يجب عليك تحديد اسم الملف الوجهة ضمن هذا المجلد أيضًا
    • خيارات :
      • ملف الدفع: مواصفات دفع تحدد الملف المحلي للمسار حيث يجب دفعه على الجهاز. يمكن أن تتكرر. إذا تم تكوين عدة ملفات ليتم دفعها إلى نفس المسار البعيد ، فسيتم دفع آخر ملف.
      • push: (مهمل) مواصفات الدفع ، بالتنسيق " /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 التعسفية إلى الوجهة على الجهاز
    • والخيارات:
      • test-file-name: اسم ملف apk المراد تثبيته على الجهاز.
      • install-arg: الوسائط الإضافية التي سيتم تمريرها إلى الأمر pm install ، بما في ذلك الشرطة البادئة ، على سبيل المثال "-d". يمكن تكرارها
  • اسم الفئة: RunCommandTargetPreparer

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

فئة الاختبار

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

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

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

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