Android Studio for Platform (ASfP), atest और Soong टेस्ट मॉड्यूल के साथ इंटिग्रेट होता है. इससे, Linux होस्ट मशीन, कनेक्ट किए गए डिवाइस या Cuttlefish वर्चुअल डिवाइस पर प्लैटफ़ॉर्म टेस्ट चलाए और डीबग किए जा सकते हैं.
ज़रूरी शर्तें
- AOSP चेकआउट और
lunchटारगेट के साथ कॉन्फ़िगर किया गया ASfP प्रोजेक्ट खोलें. - डिवाइस टेस्ट के लिए, कोई फ़िज़िकल डिवाइस कनेक्ट करें या Cuttlefish वर्चुअल डिवाइस लॉन्च करें. इस डिवाइस पर, मैचिंग बिल्ड चल रहा हो.
टेस्ट चलाना और डीबग करना
ASfP में कई जगहों से प्लैटफ़ॉर्म टेस्ट और डीबग सेशन लॉन्च किए जा सकते हैं:
Android.bpटेस्ट टारगेट: कोईAndroid.bpफ़ाइल खोलें. इसके बाद, किसी भी टेस्ट मॉड्यूल (*_testया*_test_host) के बगल में मौजूद गटर में, चलाएं पर क्लिक करें:- रन करें: यह सुविधा, Soong टेस्ट मॉड्यूल के सभी टाइप (
android_test,java_test_host,cc_test,rust_test,python_test,sh_test, औरandroid_robolectric_test) के लिए उपलब्ध है. - डिबग करें: यह सुविधा
android_testमॉड्यूल के लिए उपलब्ध है. ये मॉड्यूल,atest --wait-for-debuggerका इस्तेमाल करके Java डिबगर से अटैच किए जाते हैं. साथ ही, यह सुविधा C++ या Rust टेस्ट मॉड्यूल के लिए भी उपलब्ध है. ये मॉड्यूल, ASfP के बिल्ट-इन LLDB डिबगर के तहत लॉन्च किए जाते हैं (cc_test,cc_test_host,rust_test, औरrust_test_host).
- रन करें: यह सुविधा, Soong टेस्ट मॉड्यूल के सभी टाइप (
- सोर्स फ़ाइल के गटर आइकॉन: किसी टेस्ट क्लास या सोर्स कोड में मौजूद
@Testतरीके के बगल में मौजूद, चलाएं पर क्लिक करके, उस टेस्ट को चलाया या डीबग किया जा सकता है. - राइट-क्लिक करके दिखने वाला मेन्यू: किसी टेस्ट फ़ाइल, क्लास, तरीके या
Android.bpमॉड्यूल पर राइट-क्लिक करें. इसके बाद, चलाएं या डीबग करें को चुनें. - बिल्ट-इन एजेंट (Android Studio में एआई): एजेंट टूल विंडो में, बिल्ट-इन एजेंट
atestटारगेट चला सकता है. इससे कोड में बदलाव करने के बाद, पुष्टि की जा सकती है. - इंटिग्रेटेड टर्मिनल:
atestकमांड सीधे तौर पर चलाने के लिए, व्यू > टूल विंडो > टर्मिनल खोलें.
स्मार्ट टेस्ट कॉन्फ़िगरेशन और डीबग करना
गटर या कॉन्टेक्स्ट मेन्यू से टेस्ट लॉन्च करने पर, ASfP आपके Android.bp मॉड्यूल ग्राफ़ का इस्तेमाल करके, Soong Test रन कॉन्फ़िगरेशन बनाता है और उसे कॉन्फ़िगर करता है.
android_test Java और Kotlin टारगेट डीबग करना
Android.bp में मौजूद किसी android_test मॉड्यूल के बगल में मौजूद गटर आइकॉन पर क्लिक करें. इसके अलावा, Java या Kotlin JUnit क्लास या @Test तरीके के बगल में मौजूद गटर आइकॉन पर क्लिक करें. इसके बाद, '<TestName>' को डीबग करें को चुनें. सोर्स फ़ाइल गटर से, ASfP सबसे नज़दीकी android_test मॉड्यूल चुनता है. इस मॉड्यूल के srcs में फ़ाइल शामिल होती है. साथ ही, यह कॉन्फ़िगरेशन <module>, <module>:<SimpleClass> या <module>:<SimpleClass>#<method> का नाम देता है.
ASfP, --wait-for-debugger को atest के साथ चलाता है. साथ ही, मॉड्यूल के AndroidManifest.xml से टारगेट package एट्रिब्यूट को पढ़ता है. इसके बाद, कनेक्ट किए गए डिवाइस पर उस प्रोसेस के पूरा होने का इंतज़ार करता है और Java डिबगर को अटैच करता है.

LLDB में cc_test और rust_test टारगेट डीबग करना
C++ या Rust टेस्ट मॉड्यूल (cc_test, cc_test_host, rust_test या rust_test_host) को डीबग करने के लिए, Android.bp गटर आइकॉन पर क्लिक करें. इसके बाद, '<TestName>' को डीबग करें को चुनें. ASfP, कंपाइल किए गए टेस्ट बाइनरी को atest के ज़रिए चलाने के बजाय, अपने बिल्ट-इन LLDB डीबगर के तहत लॉन्च करता है.
Soong टेस्ट रन कॉन्फ़िगरेशन को कॉन्फ़िगर करना
Run > Edit Configurations खोलें और Soong Test कॉन्फ़िगरेशन चुनें. इससे आपको यह तय करने में मदद मिलेगी कि टेस्ट कैसे बनाए जाएं, डिप्लॉय किए जाएं, और लॉन्च किए जाएं:
- मॉड्यूल अपने-आप पूरा होने की सुविधा और
Android.bpनेविगेशन: मॉड्यूल फ़ील्ड, आपके प्रोजेक्ट में इंडेक्स किए गए Soong टेस्ट मॉड्यूल से अपने-आप पूरा हो जाता है.Android.bpमें मॉड्यूल के एलान पर जाने के लिए, फ़ील्ड के बगल में मौजूद Android.bp पर जाएं पर क्लिक करें. - इन पर चलता है: डिवाइस या होस्ट (इसमें
host_supported: trueशामिल है): ASfP, मॉड्यूल के नियम और उसके ट्रांज़िटिवdefaultsचेन (host_supported,device_supported,enabled,target.android.enabled, औरtarget.host.enabled) का आकलन करता है:- दो टारगेट वाले टेस्ट (
cc_testऔरrust_testके साथhost_supported: true): डिवाइस और होस्ट, दोनों रेडियो बटन उपलब्ध हैं. हालांकि, डिफ़ॉल्ट रूप से डिवाइस चुना जाता है. डिवाइस और होस्ट, दोनों के पास अपना अलग LLDB डीबगर टेंप्लेट होता है. डिवाइस और होस्ट के बीच इस पर चलाएं को स्विच करने से, रिमोट डिवाइस केlldb-serverकॉन्फ़िगरेशन और लोकल होस्ट के बाइनरी कॉन्फ़िगरेशन के बीच स्वैप होता है. हालांकि, हर टारगेट पर किए गए कस्टमर के हिसाब से बदलाव सुरक्षित रहते हैं. - सिंगल-टारगेट टेस्ट: अगर C++ या Rust टेस्ट सिर्फ़ एक एनवायरमेंट के लिए बनाया गया है (जैसे कि सिर्फ़ डिवाइस
cc_testया सिर्फ़ होस्टcc_test_hostयाrust_test_host), तो ASfP, काम करने वाले टारगेट को चुनता है. साथ ही, काम न करने वाले रेडियो बटन को बंद कर देता है. इसके साथ ही, एक टूलटिप भी दिखाता है, जिसमें यह बताया जाता है कि यह बटन क्यों बंद किया गया है: "<module> (<ruleType>) doesn't build for the host or device."
- दो टारगेट वाले टेस्ट (
- लॉन्च से पहले के टास्क (नेटिव टेस्ट मॉड्यूल बनाना और atest के साथ डिप्लॉय करना):
हर Soong टेस्ट कॉन्फ़िगरेशन में डिफ़ॉल्ट रूप से दो लॉन्च से पहले के टास्क शामिल होते हैं:
- नेटिव टेस्ट मॉड्यूल बनाएं: LLDB शुरू करने से पहले,
<module>-target(डिवाइस के लिए) या<module>-host(होस्ट के लिए) बनाता है. - atest के साथ डिप्लॉय करें: डिवाइस पर डीबग करते समय,
atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi>को चलाता है, ताकि Tradefed, टेस्ट डिपेंडेंसी को पुश कर सके और LLDB के बाइनरी लॉन्च करने से पहले, टारगेट प्रिपेयरर को एक्ज़ीक्यूट कर सके.atestकमांड की झलक देखने के लिए, पॉइंटर को Deploy with atest चिप पर घुमाएं. अगर डिवाइस पर पहले से ही डिपेंडेंसी मौजूद हैं, तो तेज़ी से दोहराने के लिए, atest के साथ डिप्लॉय करें को हटाएं. इससे ASfP, सिर्फ़ टेस्ट बाइनरी को सीधे तौर पर पुश करेगा. इस पर चलाएं: होस्ट चुनने पर, ASfP अपने-आप Deploy with atest को स्किप कर देता है.
- नेटिव टेस्ट मॉड्यूल बनाएं: LLDB शुरू करने से पहले,
- बदलाव करने के विकल्प और डीबगर (एलएलडीबी विकल्प कार्ड): बदलाव करने के विकल्प का इस्तेमाल करके, कॉन्फ़िगरेशन फ़ील्ड जोड़ें:
- प्रोग्राम के तर्क (सिर्फ़ ऑपरेटिंग सिस्टम, C++, और Rust टेस्ट के लिए):
डिबग करते समय,
--gtest_filterयाlibtestफ़िल्टर के बाद,cc_testयाrust_testबाइनरी को सीधे तौर पर पास किए गए अतिरिक्त तर्क. - atest के आर्ग्युमेंट (टेस्ट): टेस्ट चलाने या atest के साथ डिप्लॉय करें की मदद से डिवाइस तैयार करते समय,
atestको पास किए गए अतिरिक्त फ़्लैग. - डिबगर (सिर्फ़ C++ और Rust टेस्ट के लिए): यह तब दिखता है, जब मॉड्यूल,
cc_test*याrust_test*टारगेट हो. Rust टेस्ट के लिए, LLDB के विकल्प कार्ड (जैसे कि स्टॉप ऑन एंट्री, सेशन के दौरान सिंबल कैश मेमोरी में सेव करें, मांग पर सिंबल लोड करें या Rust विज़ुअलाइज़र के साथ) टॉगल करें. इसके बाद, चालू डिवाइस या होस्ट टेंप्लेट को रीसेट करने के लिए, डिफ़ॉल्ट पर रीसेट करें पर क्लिक करें. इसके अलावा, बदलाव के विकल्प > डीबगर से सिंबल डायरेक्ट्री, शुरू करने, पहले से चलाने, बाद में चलाने या बंद करने के निर्देश, और लॉन्च JSON (DAP सेटिंग) जोड़ें.
- प्रोग्राम के तर्क (सिर्फ़ ऑपरेटिंग सिस्टम, C++, और Rust टेस्ट के लिए):
डिबग करते समय,

परीक्षण के नतीजे देखें
ASfP में, Run या Debug टूल विंडो में, टेस्ट के पूरा होने की प्रोग्रेस, पास या फ़ेल होने की स्थिति, स्टैक ट्रेस, और डिवाइस लॉग रीयल टाइम में दिखते हैं.
टेस्टिंग के लिए सलाह
- टारगेट किए गए टेस्ट चलाना: पूरी टेस्ट सुइट को चलाए बिना, एडिटर गटर से अलग-अलग तरीकों की जांच करें.
- Cuttlefish स्नैपशॉट का इस्तेमाल करें: Cuttlefish वर्चुअल डिवाइसों पर डिवाइस टेस्ट चलाते समय, स्नैपशॉट का इस्तेमाल करें. इससे, टेस्ट के बीच डिवाइस की स्थिति को रीस्टोर किया जा सकेगा.
- Soong के बिल्ड लॉग की जांच करें: अगर कोई टेस्ट, चलने से पहले कंपाइल नहीं हो पाता है, तो कंपाइलर की गड़बड़ियों के बारे में जानने के लिए, Soong टूल विंडो देखें.