قد تتطلب بعض وحدات الاختبار إعدادًا مخصصًا وخطوات هدم لا يمكن إجراؤها داخل حالة الاختبار نفسها. قد تشمل الأمثلة النموذجية:
- تثبيت تطبيقات أخرى (بالإضافة إلى اختبار 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>
ستعمل الخيارات على تكوين أداة الاختبار من أجل:
- قبل استدعاء وحدة الاختبار ، قم بتنفيذ أمر shell "settings put secure accessibility_enabled 1" على الجهاز
- بعد انتهاء وحدة الاختبار ، قم بتنفيذ أمر 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 هذه هي الطريقة الرئيسية لتنفيذ اختبار الأجهزة.