توضّح لك هذه الصفحة كيفية كتابة اختبار من جهة المضيف لا يتطلب الجهاز، مثل الاختبار الذي يتم تشغيله على مثيل GCE لنظام التشغيل Linux. (للحصول على تفاصيل حول إجراء اختبار من خلال المضيف ويتطلب جهازًا، راجع كتابة اختبار من المضيف في اتحاد تجاري).
أنواع الاختبارات من جهة المضيف
يمكنك إجراء عدة أنواع من الاختبارات من جانب المضيف من خلال الاتحاد التجاري (TF).
اختبارات مدمجة مع المحتوى (gtest)
إنشاء اختبارات مدمجة مع المحتوى (gtests) لاختبار نظام أساسي. إذا لم يكن الاختبار يتطلّب جهازًا، يُرجى إجراؤه على host; سيتم إجراء الاختبار بشكل أسرع بكثير بهذه الطريقة. لإعداد هذه الاختبارات لإجراءها على مضيف اختبار، استخدِم مشغِّل TF HostGTest.
في ما يلي نموذج من إعدادات اختبار التجارة الإلكترونية:
<configuration description="Runs hello_world_test."> <option name="null-device" value="true" /> <test class="com.android.tradefed.testtype.HostGTest" > <option name="module-name" value="hello_world_test" /> </test> </configuration>
تُجري إعدادات الاختبار اختبار gtest (hello_world_test) على مضيف. نموذج الاختبار يمكن إنشاء إعدادات الموقع من خلاله تلقائيًا. ما لم يحتاج الاختبار إلى إعداد خاص أو تنظيف، يمكنك الاعتماد على إنشاء الإعداد التلقائي للاختبار لإنشاء اختبار TF مناسب الإعدادات.
لضبط اختبار gtest من جهة المضيف وتفعيل إنشاء إعداد الاختبار التلقائي، اضبط
من host_supported
إلى true
بوصة
Android.bp
، كما في hello_world_test.
لمزيد من المعلومات حول كتابة اختبار أصلي، يُرجى الاطّلاع على إضافة اختبار جديد مدمج مع المحتوى مثال:
اختبارات مضيف JAR
اختبارات مضيف JAR (Java)، مثل JUnit، وهي اختبارات لا يلزم تشغيلها على الجهاز، وتوفر الرموز تغطية لمشروع Java الخاص بك. يمكن ضبط مثل هذه الاختبارات لتنفيذها في أحد الاختبارات المضيف باستخدام العداء HostTest.
نموذج إعدادات اختبار التجارة الإلكترونية
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.HostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
تُجري إعدادات الاختبار اختبار JUnit من جهة المضيف لـ HelloWorldHostTest. لاحظ أن تكوين الاختبار أعلاه يمكن إنشاؤها تلقائيًا. ما لم يكن الاختبار يحتاج إلى إعداد خاص أو تنظيف، اعتمد على إنشاء إعدادات الاختبار التلقائي لإنشاء اختبار TradeFed بشكل مناسب التكوين.
لمزيد من التفاصيل حول كيفية كتابة اختبار مضيف JAR، يمكنك الرجوع إلى مقالة اختبارات مضيف JAR (Java)
اختبارات مضيف Java المعزولة
يمكن إجراء اختبارات Java بدون أجهزة في بيئة معزولة بتكلفة أداء بسيطة. ومع ذلك، هناك بعض الاعتبارات الرئيسية التي يجب مراعاتها قبل اختيار استخدام هذه محددة.
- هذا هو الركض التلقائي المستخدم لاختبارات وحدة Robolectric وJUnit
- تتوافق منصة Tradefed فقط مع اختبارات JUnit في بيئة العزل.
- لا يتم دعم سوى التبعيات المرتبطة بشكل ثابت. لم يتم الإعلان عن أي تبعيات.
مع
lib
في مسار الفئة. - لا يضع عداء العزل سوى عداء الرقائق ووعاء الاختبار على مسار الصف.
- يتم تطبيق مقدار من النفقات العامة الثابتة لكل عملية تشغيل اختبارية باستخدام برنامج التشغيل هذا.
نموذج إعدادات اختبار التجارة (معزولة)
<configuration description="Executes HelloWorldHostTest"> <test class="com.android.tradefed.testtype.IsolatedHostTest" > <option name="jar" value="HelloWorldHostTest.jar" /> </test> </configuration>
نموذج إعدادات Sayg للإعداد التلقائي
بدلاً من إنشاء إعدادات الاختبار يدويًا مثل أعلاه، يمكن لتطبيق Sayg إنشاء الإعدادات تلقائيًا باستخدام تصريح مثل هذا المثال.
java_test_host { name: "HelloWorldHostTest", test_options: { unit_test: true, }, test_suites: ["general-tests"], srcs: ["test/**/*.java"], static_libs: [ "junit", ], }
الاختبارات على الإنترنت
تستخدم اختبارات Robolectrict نفس الركض الذي تستخدمه اختبارات المضيف المعزولة، مع بعض الوظائف الخاصة الخيارات.
- يتيح الخيار
robolectric-resources
بعض خيارات سطر الأوامر الخاصة بمنصة Robolectric. أن يتم تمريره إلى العملية الفرعية وكذلك إضافة بنية شجرةandroid-all
إلى مسار الفئة الفرعي للمعالجة الفرعية. وفي حين أن الاثنتين الأخريين يمثلان أفضل الممارسات، فإن هذا الخيار إلزامي بالنسبة إجراء اختبارات Robolectric بأي نجاح. - يتيح الخيار
java-folder
تغيير وقت تشغيل Java الذي تستخدمه العملية الفرعية. هذا هو ضروريًا نظرًا لتفضيل Robolectric تفضيل إصدارات معينة من Java قد لا تتماشى مع JVM المفضل للنظام المضيف. - يتيح الخيار
exclude-paths
لأداة تشغيل العمليات الفرعية تجنُّب تحميل وحدات معيّنة. على الإطلاق، وهو أمر مفيد عندما يأتي JAR بفئات غريبة قد تتسبب في حدوث أخطاء في التحميل.java.
هو استبعاد شائع، وذلك لتجنُّب طرحSecurityException
استثناءات.
نموذج من إعدادات Robolectric
<configuration description="Executes a Sample Robolectric Test"> <option name="java-folder" value="prebuilts/jdk/jdk9/linux-x86/" /> <option name="exclude-paths" value="java" /> <option name="use-robolectric-resources" value="true" /> <test class="com.android.tradefed.testtype.IsolatedHostTest"> <option name="jar" value="RobolectricExampleTest.jar" /> </test> </configuration>
نموذج إعدادات Spamg للإنشاء التلقائي لميزة Robolectric
بدلاً من إنشاء إعدادات الاختبار يدويًا مثل أعلاه، سينشئ تطبيق Sayg إنشاء التهيئة تلقائيًا باستخدام تعريف مثل هذا المثال.
android_robolectric_test { name: "HelloWorldRoboTest", srcs: [ "src/**/*.java", ], // Include the testing libraries static_libs: [ "mockito-robolectric-prebuilt", "platform-test-annotations", "testng", "truth-prebuilt", ], instrumentation_for: "HelloWorldApp", }
اختبار Python
إذا تمت كتابة منطق الاختبار في Python، استخدِم نوع الإصدار python_test_host
لإنشاء ملف Par.
يتم تنفيذه بواسطة TF PythonBinaryHostTest
.
نموذج إعدادات اختبار التجارة الإلكترونية
<configuration description="Config to run atest unittests"> <test class="com.android.tradefed.testtype.python.PythonBinaryHostTest" > <option name="par-file-name" value="atest_unittests" /> <option name="test-timeout" value="2m" /> </test> </configuration>
إعدادات حزمة الاختبار
لإتاحة إمكانية وصول TF إلى الاختبار من جهة المضيف لإصدار معيَّن، اضبط
ضبط وحدة الاختبار `test_suites`
على
`general-tests`
:
test_suites: ["general-tests"],
باستخدام هذا الإعداد، يتم جمع الاختبار لـ general-tests.zip
في
الهدف test_suites
.