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

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

  • تثبيت تطبيقات أخرى (بالإضافة إلى اختبار 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 هذه هي الطريقة الرئيسية لتنفيذ اختبار الأجهزة.