يصف هذا المستند كيفية إجراء الاختبارات مباشرةً من سطر الأوامر. هذا النمط أنك تعرف بالفعل كيفية إنشاء تطبيق Android كتابة اختبارات لتطبيقك. لمزيد من المعلومات حول كيفية إنشاء اختبارات يُرجى الاطّلاع على اختبار التطبيقات على Android.
عند إنشاء تطبيقك باستخدام نظام إصدار Gradle، فإن Android Gradle المكوّن الإضافي يسمح لك بإجراء اختبارات من خلال أداة Gradle مشروعك باستخدام سطر الأوامر. للحصول على مزيد من التحكم الدقيق، يمكنك اختيار إجراء اختباراتك من خلال Android Debug Bridge (adb). يمكن أن يكون ذلك مفيدًا عند إجراء الاختبارات في التكامل المستمر.
للتعرف على كيفية تشغيل اختبارات الأدوات الآلية من سطر الأوامر باستخدام الأجهزة الافتراضية التي تديرها Gradle نيابةً عنك، راجِع توسيع نطاق اختباراتك باستخدام Gradle الأجهزة المُدارة:
إجراء الاختبارات باستخدام Gradle
يتيح لك المكوّن الإضافي لنظام Gradle المتوافق مع Android إجراء اختبارات من مشروع Gradle باستخدام سطر الأوامر.
يلخّص الجدول التالي كيفية إجراء اختباراتك باستخدام Gradle:
نوع اختبار الوحدة | الأمر الذي سيتم تنفيذه | موقع نتيجة الاختبار |
---|---|---|
اختبار الوحدة المحلية |
نفِّذ مهمة test :
|
ملفات نتائج اختبار HTML:path_to_your_project/module_name/build/reports/tests/
الدليل.
ملفات نتائج اختبار XML: |
اختبار وحدة قياس محسوب |
نفِّذ مهمة connectedAndroidTest :
|
ملفات نتائج اختبار HTML:path_to_your_project/module_name/build/reports/androidTests/connected/
الدليل.
ملفات نتائج اختبار XML: |
يدعم Gradle
اختصارات اسم المهمة.
على سبيل المثال، يمكنك بدء مهمة connectedAndroidTest
من خلال
إدخال الأمر التالي:
./gradlew cAT
ويمكنك أيضًا اختيار تشغيل مهمتَي Gradle check
وconnectedCheck
. هذه
إجراء اختبارات محلية أو آلية، على التوالي،
تضمين عمليات التحقق الأخرى التي تمت إضافتها بواسطة مكونات Gradle الإضافية الأخرى.
إجراء الاختبارات على وحدة معيّنة
تُجري المَهمتان test
وconnectedAndroidTest
اختبارات على كل وحدة في
مشروعك. يمكنك إجراء اختبارات على وحدة معيّنة من خلال
بادئة للمهمة test
أو connectedAndroidTest
باسم الوحدة
نقطتين (:). على سبيل المثال، يقوم الأمر التالي بتشغيل اختبارات قياس حالة
وحدة mylibrary
:
./gradlew mylibrary:connectedAndroidTest
إجراء اختبارات على صيغة الإصدار
تُجري المهام test
وconnectedAndroidTest
اختبارات على كل مهمة.
إنشاء صيغة في مشروعك يمكنك استهداف
صيغة إصدار محددة باستخدام البنية التالية:
- لاختبارات الوحدة المحلية:
./gradlew testVariantNameUnitTest
- بالنسبة إلى اختبارات قياس حالة التطبيق:
./gradlew connectedVariantNameAndroidTest
تنفيذ طرق اختبار أو صفوف محدّدة
عند إجراء اختبارات وحدة محلية، تتيح لك Gradle استهداف اختبارات محدّدة باستخدام
العلامة --tests
. على سبيل المثال، يقوم الأمر التالي بتشغيل
يتم إجراء sampleTestMethod
اختبارات لصيغة الإصدار المحدّدة. لمزيد من المعلومات حول
باستخدام العلامة --tests
، فاقرأ وثائق Gradle على
فلترة الاختبار:
./gradlew testVariantNameUnitTest --tests '*.sampleTestMethod'
إجراء الاختبارات باستخدام adb
عند إجراء اختبارات من سطر الأوامر باستخدام Android Debug Bridge (adb)، هناك المزيد من الخيارات اختيار الاختبارات التي سيتم إجراؤها أكثر من أي طريقة أخرى. يمكنك تحديد خيار طرق الاختبار أو فلترة الاختبارات وفقًا لتعليق توضيحي مخصّص أو تحديد الاختبار الخيارات. ونظرًا لأن إجراء الاختبار يتم التحكم فيه بالكامل من خلال سطر الأوامر، يمكنك تخصيص الاختبار باستخدام البرامج النصية أوامر بعدة طرق.
لإجراء اختبار من سطر الأوامر، يمكنك تشغيل adb shell
لبدء سطر أوامر.
على جهازك أو المحاكي. وفي داخل تلك الواجهة، يمكنك التفاعل مع
مدير النشاط
باستخدام الأمر am
واستخدام الأمر الفرعي instrument
لتنفيذ اختباراتك.
كاختصار، يمكنك بدء واجهة adb واستدعاء am instrument
وتحديد
علامات سطر الأوامر كلها في سطر إدخال واحد. يتم فتح واجهة الأوامر على الجهاز أو
وتُجري اختباراتك وتُنتج المخرجات، ثم تعود إلى سطر الأوامر
على جهاز الكمبيوتر.
لإجراء اختبار باستخدام am instrument
:
- إنشاء تطبيقك الرئيسي أو إعادة إنشائه حزمة الاختبار.
- تثبيت حزمة الاختبار والحزمة الرئيسية ملفات حزمة Android (ملفات APK) للتطبيقات على جهاز Android الحالي أو المحاكي.
في سطر الأوامر، أدخِل:
adb shell am instrument -w <test_package_name>/<runner_class>
حيث يكون
<test_package_name>
هو اسم حزمة Android للاختبار تطبيق Android، و<runner_class>
هو اسم فئة عدّاء اختبار Android التي تستخدمها. اسم حزمة Android هو قيمة حزمة عنصر البيان سمة الحزمة في ملف بيان حزمة الاختبار (AndroidManifest.xml
).عادةً ما تكون فئة عدّاء اختبار Android
AndroidJUnitRunner
:adb shell am instrument -w com.android.example/androidx.test.runner.AndroidJUnitRunner
ستظهر نتائج اختبارك في STDOUT
.
علامات الآلات الموسيقية
للعثور على قائمة بجميع العلامات التي يمكن استخدامها مع الأمر am instrument
،
تشغيل adb shell am help
. يتم توضيح بعض العلامات المهمة في
الجدول التالي:
إبلاغ | القيمة | الوصف |
---|---|---|
-w
|
(لا شيء) |
يجبر am instrument على الانتظار حتى الأدوات
قبل الإنهاء. وهذا يحافظ على
مفتوحة حتى تنتهي الاختبارات. هذه العلامة مطلوبة
اطّلِع على نتائج اختباراتك.
|
-r
|
(لا شيء) |
تكون النتائج بتنسيق أولي. استخدِم هذه العلامة إذا أردت
جمع قياسات الأداء بحيث لا يتم تنسيقها
نتائج الاختبار. تم تصميم هذه العلامة للاستخدام مع العلم
-e perf true (موثّق في
خيارات الأدوات).
|
-e
|
<test_options>
|
توفر خيارات اختبار كأزواج المفتاح/القيمة. تشير رسالة الأشكال البيانية
تمرر أداة am instrument هذه الأذونات إلى العنصر المحدد
لفئة الأداة باستخدام
onCreate()
. يمكنك تحديد مواضع ورود متعددة
-e <test_options> المفاتيح والقيم هي
كما هو موضح في
خيارات الآلة. يمكنك
فقط استخدام أزواج المفتاح/القيمة هذه مع
AndroidJUnitRunner
أو باستخدام InstrumentationTestRunner
وفئاتها الفرعية. ولا يكون لاستخدامهما مع أي فئة أخرى أي تأثير.
|
--no-hidden-api-checks
|
(لا شيء) | لإيقاف القيود المفروضة على استخدام واجهات برمجة التطبيقات المخفية. لمزيد من المعلومات، للحصول على معلومات حول ماهية واجهات برمجة التطبيقات المخفية وكيفية تأثيرها في تطبيق، قراءة القيود المفروضة على الواجهات غير المستندة إلى حزمة تطوير البرامج (SDK): |
خيارات الآلات الموسيقية
تضبط أداة "am instrument
" خيارات الاختبار على
AndroidJUnitRunner
أو InstrumentationTestRunner
في شكل أزواج مفاتيح/قيم، باستخدام علامة -e
، وعلى النحو التالي:
-e <key> <value>
تقبل بعض المفاتيح قيمًا متعددة. يمكنك تحديد قيم متعددة في
قائمة مفصولة بفواصل. على سبيل المثال، هذا الاستدعاء
يوفّر AndroidJUnitRunner
قيمًا متعددة للمفتاح package
:
adb shell am instrument -w -e package com.android.test.package1,com.android.test.package2 \
> com.android.test/androidx.test.runner.AndroidJUnitRunner
يسرد الجدول التالي أزواج المفتاح/القيمة التي يمكنك استخدامها مع برنامج تشغيل الاختبار:
المفتاح | القيمة | الوصف |
---|---|---|
package
|
<Java_package_name>
|
اسم حزمة Java المؤهلة بالكامل لأحد الحزم في تطبيق الاختبار. أي فئة حالة اختبار تستخدم هذا اسم الحزمة المنفذة. لاحظ أن هذا ليس اسم حزمة Android تتضمن حزمة الاختبار واحدة اسم حزمة Android ولكن قد يحتوي على عدة حزم Java. |
class |
<class_name> |
اسم فئة Java المؤهلة بالكامل لإحدى حالات الاختبار الصفوف. ولا يتم تنفيذ سوى فئة حالة الاختبار هذه. |
<class_name>#method name |
تمثّل هذه السمة اسم فئة حالة اختبارية مؤهلة بالكامل وإحدى طرقها. فقط يتم تنفيذ هذه الطريقة. ملاحظة علامة التجزئة (#) بين الفئة الاسم واسم الطريقة. | |
func |
true |
تشغيل جميع صفوف الاختبار التي تشمل
InstrumentationTestCase
|
unit |
true |
تشغيل جميع صفوف الاختبار التي لا تضم أيًّا مما يلي
InstrumentationTestCase أو
PerformanceTestCase
|
size |
[small | medium | large ]
|
لتشغيل طريقة اختبار حاصلة على تعليقات توضيحية حسب الحجم التعليقات التوضيحية هي
@SmallTest و@MediumTest و
@LargeTest
|
perf |
true |
تشغيل جميع صفوف الاختبار التي تنفّذ
PerformanceTestCase
عند استخدام هذا الخيار، حدِّد العلامة -r
am instrument بحيث يتم الاحتفاظ بالمخرجات بتنسيق أولي
ولم تتم إعادة تنسيقها كنتائج اختبار.
|
debug |
true |
يتم إجراء الاختبارات في وضع تصحيح الأخطاء. |
log |
true |
يحمّل جميع الاختبارات المحدّدة ويسجّلها ولكن لا يُجريها. الاختبار
تظهر المعلومات في STDOUT . استخدِم هذا العنوان لإثبات الملكية
مجموعات من عوامل التصفية الأخرى ومواصفات الاختبار.
|
emma |
true |
تجري تحليل تغطية رمز EMMA ويكتب الإخراج إلى
/data/<app_package>/coverage.ec على الجهاز. إلى
لإلغاء مكان الملف، استخدِم المفتاح coverageFile .
كما هو موضح في الإدخال التالي.
ملاحظة: يتطلب هذا الخيار توفّر وسيلة لإدارة الخدمات الجوّالة للمؤسسات (EMMA).
إصدار التطبيق الاختباري، والذي يمكنك إنشاؤه باستخدام
هدف واحد ( |
coverageFile |
<filename> |
لإلغاء الموقع التلقائي لملف تغطية EMMA على
الخاص بك. يمكنك تحديد هذه القيمة كمسار واسم ملف بتنسيق UNIX.
يتم وصف اسم الملف الافتراضي في إدخال ملف
المفتاح emma .
|
عند استخدام علامة -e
، يجب الانتباه لما يلي:
- استدعاء
am instrument
onCreate(Bundle)
معBundle
تحتوي على قيمة المفتاح أزواج. - يكون للمفتاح
package
الأولوية على المفتاحclass
. إذا حددت ثم تحديد فئة ضمن تلك الحزمة بشكل منفصل، فإن Android ويجري جميع الاختبارات في الحزمة ويتجاهل مفتاح الفئة. - لا يمكن استخدام المفتاح
func
أو المفتاحunit
إلا بشكل تبادلي.
أمثلة على استخدام هذه الكلمة في جملة
تقدِّم الأقسام التالية أمثلة على استخدام am instrument
لإجراء الاختبارات.
وتستند إلى البنية التالية:
- تحمل حزمة الاختبار اسم حزمة Android
com.android.demo.app.tests
. - فئتان لاختبار الأدوات:
TestClass1
، الذي يحتوي على طريقة الاختبارtestMethod1
TestClass2
، الذي يحتوي على طريقتَي الاختبارtestMethod2
وtestMethod3
- عداء الاختبار هو
AndroidJUnitRunner
تشغيل حزمة الاختبار بأكملها
لتشغيل جميع الفصول الدراسية في حزمة الاختبار، أدخل:
adb shell am instrument -w com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
إجراء جميع الاختبارات في صف حالة اختبارية
لإجراء كل الاختبارات في الصف TestClass1
، أدخِل:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
اختَر مجموعة فرعية من الاختبارات
لإجراء كل الاختبارات في الفئة TestClass1
والطريقة testMethod3
في TestClass2
،
Enter:
adb shell am instrument -w \
> -e class com.android.demo.app.tests.TestClass1,com.android.demo.app.tests.TestClass2#testMethod3 \
> com.android.demo.app.tests/androidx.test.runner.AndroidJUnitRunner
يمكنك العثور على المزيد من حالات الاستخدام في
AndroidJUnitRunner
مرجع واجهة برمجة التطبيقات.