تلتزم Google بتعزيز المساواة العرقية للمجتمعات السوداء. أنظر كيف.
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

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

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

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

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

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

تكوين وحدة الاختبار لوحدة اختبار هو ملف XML مطلوب يضاف إلى المجلد المصدر لوحدة المستوى الأعلى المسمى "AndroidTest.xml". يتبع XML تنسيق ملف التكوين الذي يستخدمه تسخير أتمتة اختبار اتحاد التجارة. حاليًا ، العلامات الرئيسية التي يتم التعامل معها عبر تكوينات وحدة الاختبار هي علامات "target_preparer" و "اختبار".

معدو الهدف

تحدد علامة "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 "إعدادات تضع الوصول الآمن 1" على الجهاز
  2. بعد انتهاء الوحدة النمطية للاختبار ، قم بتنفيذ أمر shell "الإعدادات تضع الوصول الآمن 0".

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

يعتمد الغرض الدقيق لحقل القيمة على كيفية تعريف المُحضر للخيار: يمكن أن يكون سلسلة أو رقمًا أو منطقيًا أو حتى مسار ملف وما إلى ذلك. في المثال أعلاه ، يعني اسم "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

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

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

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