كتابة اختبار بدون جهاز من جهة المضيف بتنسيق TF

توضّح لك هذه الصفحة كيفية كتابة اختبار من جهة المضيف لا يتطلب الجهاز، مثل الاختبار الذي يتم تشغيله على مثيل 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.