आसान बिल्ड कॉन्फ़िगरेशन

हर नए टेस्ट मॉड्यूल में एक कॉन्फ़िगरेशन फ़ाइल होनी चाहिए, ताकि मॉड्यूल के मेटाडेटा, कंपाइल करने के समय की डिपेंडेंसी, और पैकेजिंग के निर्देशों के साथ बिल्ड सिस्टम को निर्देश दिया जा सके. Android अब Soong बिल्ड सिस्टम का इस्तेमाल करके, आसानी से काम करने के लिए टेस्ट कॉन्फ़िगरेशन.

Soong, ब्लूप्रिंट या .bp फ़ाइलों का इस्तेमाल करता है. ये JSON जैसी होती हैं, जिनमें मॉड्यूल बनाने के बारे में आसानी से जानकारी दी जाती है. यह फ़ॉर्मैट, 'बनाएं' पर आधारित सिस्टम की जगह लेगा पिछली रिलीज़ में इस्तेमाल किया गया है. Soong रेफ़रंस फ़ाइलें देखें ज़्यादा जानकारी के लिए, लगातार इंटिग्रेशन डैशबोर्ड पर जाएं.

कस्टम टेस्टिंग के लिए या Android कंपैटबिलिटी टेस्ट सुइट (सीटीएस), फ़ॉलो करें मुश्किल टेस्ट कॉन्फ़िगरेशन आज़माएं.

उदाहरण

नीचे दी गई एंट्री, ब्लूप्रिंट कॉन्फ़िगरेशन फ़ाइल के इस उदाहरण से ली गई हैं: /platform_testing/tests/example/instrumentation/Android.bp

सुविधा के लिए यहां एक स्नैपशॉट शामिल किया गया है:

android_test {
    name: "HelloWorldTests",
    srcs: ["src/**/*.java"],
    sdk_version: "current",
    static_libs: ["androidx.test.runner"],
    certificate: "platform",
    test_suites: ["device-tests"],
}

ध्यान दें कि शुरुआत में android_test एलान से पता चलता है कि यह एक टेस्ट है. android_app को शामिल करने का मतलब यह है कि यह एक बिल्ड है पैकेज.

सेटिंग

यहां दी गई सेटिंग के बारे में जानकारी दी गई है:

    name: "HelloWorldTests",

android_test मॉड्यूल टाइप तय होने पर (ब्लॉक की शुरुआत में), name सेटिंग ज़रूरी है. यह आपके मॉड्यूल को एक नाम देता है और फिर APK का नाम वही होगा जिसमें .apk सफ़िक्स होगा, जैसे कि इस मामले में, नतीजे के तौर पर मिलने वाले टेस्ट apk को HelloWorldTests.apk नाम दिया गया है. इसके अलावा, यह भी आपके मॉड्यूल के लिए टारगेट का नाम तय करता है, ताकि आप अपने टेस्ट मॉड्यूल और उसकी सभी डिपेंडेंसी को बनाने के लिए make [options] <HelloWorldTests> का इस्तेमाल कर सकें.

    static_libs: ["androidx.test.runner"],

static_libs सेटिंग, बिल्ड सिस्टम को कॉन्टेंट शामिल करने का निर्देश देती है मौजूदा मॉड्यूल के नतीजे के तौर पर मिले APK में, नाम वाले मॉड्यूल की संख्या शामिल है. इसका मतलब है कि नाम वाले हर मॉड्यूल से एक .jar फ़ाइल बनेगा और उसका कॉन्टेंट ऐसा होगा इसका इस्तेमाल कंपाइल करते समय क्लासपाथ के रेफ़रंस को रिज़ॉल्व करने और साथ ही करने के लिए किया जाता है मिलने वाले apk में शामिल किया गया है.

androidx.test.runner मॉड्यूल, AndroidX Test Runner लाइब्रेरी के लिए पहले से बना है. इसमें टेस्ट रनर AndroidJUnitRunner शामिल है. AndroidJUnitRunner, JUnit4 टेस्टिंग फ़्रेमवर्क के साथ काम करता है और इसे बदल दिया गया है Android 10 में InstrumentationTestRunner. Android पर ऐप्लिकेशन टेस्ट करना पर जाकर, Android ऐप्लिकेशन टेस्ट करने के बारे में ज़्यादा पढ़ें.

अगर कोई नया इंस्ट्रूमेंटेशन मॉड्यूल बनाया जा रहा है, तो आपको हमेशा अपने टेस्ट रनर के तौर पर androidx.test.runner लाइब्रेरी से शुरू करना चाहिए. प्लैटफ़ॉर्म के सोर्स ट्री में, ub-uiautomator, mockito-target, easymock वगैरह जैसे टेस्टिंग के अन्य फ़्रेमवर्क भी शामिल होते हैं.

    certificate: "platform",

certificate सेटिंग, बिल्ड सिस्टम को निर्देश देती है कि वह उसी सर्टिफ़िकेट मिला है. यह तब ज़रूरी होता है, जब टेस्ट में हस्ताक्षर का इस्तेमाल किया जाता है सुरक्षित अनुमति या एपीआई का इस्तेमाल किया जा सकता है. ध्यान दें कि यह प्लैटफ़ॉर्म की लगातार जांच करने के लिए सही है. हालांकि, इसका इस्तेमाल सीटीएस टेस्ट मॉड्यूल में नहीं किया जाना चाहिए. ध्यान दें कि यह उदाहरण इस सर्टिफ़िकेट सेटिंग का इस्तेमाल सिर्फ़ इलस्ट्रेशन के लिए किया जाता है: टेस्ट कोड उदाहरण के लिए, परीक्षण apk के साथ हस्ताक्षर करने की आवश्यकता नहीं है के लिए स्पेशल प्लैटफ़ॉर्म सर्टिफ़िकेट मिला है.

अगर आप अपने ऐसे कॉम्पोनेंट के लिए इंस्ट्रुमेंटेशन लिख रहे हैं जो इसके बाहर रहता है सिस्टम सर्वर का मतलब है कि इसे किसी सामान्य ऐप्लिकेशन के APK की तरह कम या ज़्यादा पैकेज किया जाता है, यह सिस्टम इमेज में बिल्ट-इन होता है और यह एक खास ऐप्लिकेशन हो सकता है. क्या आपका इंस्ट्रुमेंटेशन, ऐप्लिकेशन पैकेज को टारगेट करेगा (नीचे देखें सेक्शन में भी जोड़ा जा सकता है. इस मामले में, आपका आवेदन Makefile की खुद की certificate सेटिंग और आपका इंस्ट्रुमेंटेशन हो सकता है मॉड्यूल में समान सेटिंग रखनी चाहिए. ऐसा इसलिए होता है, क्योंकि ऐप्लिकेशन पर इंस्ट्रुमेंटेशन की जांच की जा रही है, आपके जांच वाले APK और ऐप्लिकेशन के APK को साइन किया जाना चाहिए उसी प्रमाणपत्र के साथ.

अन्य मामलों में, आपको इस सेटिंग की ज़रूरत नहीं होती है: बिल्ड सिस्टम बिल्ड वैरिएंट है और इसे आम तौर पर dev-keys कहा जाता है.

    test_suites: ["device-tests"],

test_suites सेटिंग की मदद से, ट्रेड होकर टेस्ट को आसानी से खोजा जा सकता है फ़ेडरेशन टेस्ट हार्नेस. सीटीएस जैसे दूसरे सुइट को यहां जोड़ा जा सकता है, ताकि यह टेस्ट को शेयर किया जा सकता है.

${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk

वैकल्पिक सेटिंग

इन वैकल्पिक सेटिंग के बारे में जानकारी मिलती है:

    test_config: "path/to/hello_world_test.xml"

test_config सेटिंग उस बिल्ड सिस्टम को निर्देश देती है जिसकी ज़रूरत आपके टेस्ट टारगेट को होती है खास कॉन्फ़िगरेशन. डिफ़ॉल्ट रूप से, Android.bp के बगल में मौजूद AndroidTest.xml कॉन्फ़िगरेशन से जुड़ा है.

    auto_gen_config: true

auto_gen_config सेटिंग से पता चलता है कि टेस्ट कॉन्फ़िगरेशन बनाना है या नहीं स्वचालित रूप से. अगर Android.bp के बगल में AndroidTest.xml मौजूद न हो, तो यह विशेषता को स्पष्ट रूप से सही पर सेट करने की आवश्यकता नहीं है.

    require_root: true

require_root सेटिंग, बिल्ड सिस्टम को RootTargetTargetr जोड़ने के निर्देश देती है को अपने-आप जनरेट किए गए टेस्ट कॉन्फ़िगरेशन में बदला जा सकता है. इससे टेस्ट को रूट के साथ चलाने की गारंटी मिल जाती है अनुमतियां दी हैं.

    test_min_api_level: 29

test_min_api_level सेटिंग, बिल्ड सिस्टम को यह निर्देश देती है कि अपने-आप जनरेट किए गए टेस्ट कॉन्फ़िगरेशन में, MinApiLevelModeleController. कारोबार करते समय फ़ेडरेशन, टेस्ट कॉन्फ़िगरेशन को चलाता है. अगर डिवाइस प्रॉपर्टी का इस्तेमाल किया जाता है, तो टेस्ट को छोड़ दिया जाएगा ro.product.first_api_level में से < test_min_api_level.