TF में होस्ट-साइड डिवाइस रहित परीक्षण लिखें

यह पृष्ठ आपको बताता है कि एक होस्ट-साइड परीक्षण कैसे लिखा जाए जिसके लिए किसी डिवाइस की आवश्यकता नहीं होती है, जैसे कि एक परीक्षण जो लिनक्स जीसीई इंस्टेंस पर चलता है। (एक होस्ट-संचालित परीक्षण लिखने के बारे में विवरण के लिए जिसके लिए एक उपकरण की आवश्यकता होती है, ट्रेड फेडरेशन में एक होस्ट-संचालित परीक्षण लिखें देखें।)

होस्ट-साइड परीक्षण प्रकार

आप ट्रेड फेडरेशन (टीएफ) के माध्यम से कई प्रकार के होस्ट-साइड परीक्षण चला सकते हैं।

मूल (जीटेस्ट) परीक्षण

किसी प्लेटफ़ॉर्म का परीक्षण करने के लिए मूल परीक्षण (gtests) बनाएं। यदि परीक्षण के लिए किसी उपकरण की आवश्यकता नहीं है, तो इसे होस्ट पर चलाएं; इस तरह परीक्षण बहुत तेजी से चलेगा। ऐसे परीक्षणों को परीक्षण होस्ट पर चलाने के लिए कॉन्फ़िगर करने के लिए, 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 को कॉन्फ़िगर करने और ऑटो टेस्ट-कॉन्फ़िगरेशन जेनरेशन को सक्षम करने के लिए, Android.bp में hello_world_test की तरह, host_supported को true पर सेट करें।

नेटिव परीक्षण लिखने के बारे में अधिक जानकारी के लिए, नया नेटिव टेस्ट उदाहरण जोड़ना देखें।

JAR होस्ट परीक्षण

JAR (जावा) होस्ट परीक्षण , जैसे JUnit, ऐसे परीक्षण हैं जिन्हें किसी डिवाइस पर चलाने की आवश्यकता नहीं होती है, और जो आपके जावा प्रोजेक्ट का कोड कवरेज प्रदान करते हैं। ऐसे परीक्षणों को रनर HostTest का उपयोग करके परीक्षण होस्ट पर चलाने के लिए कॉन्फ़िगर किया जा सकता है।

नमूना ट्रेडफेड परीक्षण विन्यास

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.HostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

परीक्षण कॉन्फ़िगरेशन HelloWorldHostTest का होस्ट-साइड JUnit परीक्षण चलाता है। ध्यान दें कि उपरोक्त परीक्षण कॉन्फ़िगरेशन स्वतः उत्पन्न हो सकता है। जब तक आपके परीक्षण को विशेष सेटअप या सफाई की आवश्यकता न हो, उचित ट्रेडफेड परीक्षण कॉन्फ़िगरेशन बनाने के लिए ऑटो टेस्ट-कॉन्फ़िगरेशन पीढ़ी पर भरोसा करें।

JAR होस्ट टेस्ट कैसे लिखें, इसके बारे में अधिक जानकारी के लिए, JAR (जावा) होस्ट टेस्ट पेज देखें।

पृथक जावा होस्ट परीक्षण

डिवाइस रहित जावा परीक्षणों को मामूली प्रदर्शन लागत के साथ एक पृथक वातावरण में चलाया जा सकता है। हालाँकि, इस वातावरण का उपयोग चुनने से पहले कुछ प्रमुख बातों पर विचार किया जाना चाहिए।

  • यह रोबोइलेक्ट्रिक और जुनीट यूनिट परीक्षणों के लिए उपयोग किया जाने वाला डिफ़ॉल्ट रनर है
  • ट्रेडफेड अलगाव वातावरण में केवल JUnit परीक्षणों का समर्थन करता है।
  • केवल स्थिर रूप से जुड़ी निर्भरताएँ समर्थित हैं। lib के साथ घोषित कोई भी निर्भरता क्लासपाथ में शामिल नहीं है।
  • आइसोलेशन रनर केवल शिम रनर और आपके टेस्ट जार को क्लासपाथ पर रखता है।
  • इस धावक के साथ निष्पादित प्रति परीक्षण रन में कुछ निश्चित ओवरहेड होता है।

नमूना ट्रेडफेड परीक्षण विन्यास (पृथक)

<configuration description="Executes HelloWorldHostTest">
    <test class="com.android.tradefed.testtype.IsolatedHostTest" >
        <option name="jar" value="HelloWorldHostTest.jar" />
    </test>
</configuration>

ऑटोजेनरेशन के लिए नमूना सूंग कॉन्फ़िगरेशन

उपरोक्त की तरह मैन्युअल रूप से परीक्षण कॉन्फ़िगरेशन बनाने के बजाय, सूंग इस उदाहरण की तरह एक घोषणा का उपयोग करके कॉन्फ़िगरेशन को स्वचालित रूप से उत्पन्न कर सकता है।

java_test_host {
    name: "HelloWorldHostTest",

    test_options: {
        unit_test: true,
    },

    test_suites: ["general-tests"],

    srcs: ["test/**/*.java"],

    static_libs: [
        "junit",
    ],
}

रोबोइलेक्ट्रिक परीक्षण

रोबोइलेक्ट्रिक परीक्षण कुछ विशेष विकल्पों के साथ पृथक होस्ट परीक्षणों के समान रनर का उपयोग करते हैं।

  • robolectric-resources विकल्प कुछ रोबोइलेक्ट्रिक-विशिष्ट कमांड लाइन विकल्पों को उपप्रोसेस में पारित करने में सक्षम बनाता है और साथ ही android-all के ट्री बिल्ड को उपप्रोसेस क्लासपाथ में जोड़ता है। जबकि अन्य दो सर्वोत्तम अभ्यास हैं, यह विकल्प किसी भी सफलता के साथ रोबोइलेक्ट्रिक परीक्षण चलाने के लिए अनिवार्य है।
  • java-folder विकल्प उपप्रोसेस द्वारा उपयोग किए जाने वाले जावा रनटाइम को बदलने की अनुमति देता है। रोबोइलेक्ट्रिक द्वारा विशेष जावा संस्करणों को प्राथमिकता देने के कारण यह आवश्यक है जो होस्ट सिस्टम के पसंदीदा जेवीएम के साथ संरेखित नहीं हो सकता है।
  • exclude-paths विकल्प उपप्रोसेस धावक को विशेष मॉड्यूल को लोड करने से बचने की अनुमति देता है, जो तब उपयोगी होता है जब JAR बाहरी कक्षाओं के साथ आता है जो लोड त्रुटियों का कारण बन सकता है। java. SecurityException अपवादों को फेंकने से बचने के लिए, यह एक सामान्य बहिष्करण है।

नमूना रोबोइलेक्ट्रिक कॉन्फ़िगरेशन

<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>

रोबोइलेक्ट्रिक ऑटोजेनरेशन के लिए नमूना सूंग कॉन्फ़िगरेशन

उपरोक्त की तरह मैन्युअल रूप से परीक्षण कॉन्फ़िगरेशन बनाने के बजाय, सूंग इस उदाहरण की तरह एक घोषणा का उपयोग करके कॉन्फ़िगरेशन को स्वचालित रूप से उत्पन्न कर सकता है।

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_test_host उपयोग करें जिसे 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>

परीक्षण सुइट सेटिंग

किसी दिए गए निर्माण के लिए होस्ट-साइड परीक्षण टीएफ द्वारा पहुंच योग्य होने के लिए, परीक्षण मॉड्यूल `test_suites` सेटिंग को `general-tests` पर सेट करें:

test_suites: ["general-tests"],

इस सेटिंग के साथ, परीक्षण को test_suites लक्ष्य पर general-tests.zip पर पैक किया जाता है।