Android Studio for Platform (ASfP) ผสานรวมกับ atest และโมดูลทดสอบ Soong เพื่อให้คุณเรียกใช้และแก้ไขข้อบกพร่องของการทดสอบแพลตฟอร์มในเครื่องโฮสต์ Linux, อุปกรณ์ที่เชื่อมต่อ หรืออุปกรณ์เสมือนจริง Cuttlefish จาก IDE ได้
สิ่งที่ต้องมีก่อน
- เปิดโปรเจ็กต์ ASfP ที่กำหนดค่าด้วยการชำระเงิน AOSP และเป้าหมาย
lunch - สำหรับการทดสอบอุปกรณ์ ให้เชื่อมต่ออุปกรณ์จริงหรือเปิดอุปกรณ์เสมือน 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(แนบมากับดีบักเกอร์ Java โดยใช้atest --wait-for-debugger) และโมดูลทดสอบ C++ หรือ Rust (cc_test,cc_test_host,rust_testและrust_test_hostซึ่งเปิดตัว ภายใต้ดีบักเกอร์ LLDB ในตัวของ ASfP)
- เรียกใช้: พร้อมใช้งานสำหรับโมดูลทดสอบ Soong ทุกประเภท (
- ไอคอนแถบด้านข้างของไฟล์ต้นฉบับ: คลิกเรียกใช้ข้างคลาสทดสอบหรือ
@Testเมธอดในซอร์สโค้ดเพื่อเรียกใช้หรือแก้ไขข้อบกพร่องของการทดสอบนั้นๆ - เมนูตามบริบทคลิกขวา: คลิกขวาที่ไฟล์ทดสอบ คลาส เมธอด หรือ
Android.bpโมดูล แล้วเลือกเรียกใช้หรือแก้ไขข้อบกพร่อง - เอเจนต์ในตัว (AI ใน Android Studio): ในหน้าต่างเครื่องมือ Agent เอเจนต์ในตัวจะเรียกใช้
atestเป้าหมายเพื่อยืนยันการเปลี่ยนแปลงหลังจากแก้ไขโค้ดได้ - เทอร์มินัลในตัว: เปิดดู > หน้าต่างเครื่องมือ > เทอร์มินัลเพื่อเรียกใช้คำสั่ง
atestโดยตรง
การกำหนดค่าและการแก้ไขข้อบกพร่องของการทดสอบอัจฉริยะ
เมื่อเปิดใช้การทดสอบจากแถบด้านข้างหรือเมนูตามบริบท ASfP จะสร้างและ
กำหนดค่าการกำหนดค่าการเรียกใช้ Soong Test โดยใช้กราฟโมดูล Android.bp
แก้ไขข้อบกพร่องของเป้าหมาย android_test Java และ Kotlin
คลิกไอคอนแถบข้างที่อยู่ถัดจากandroid_testโมดูลใน Android.bp หรือถัดจาก
คลาส JUnit ของ Java หรือ Kotlin หรือเมธอด @Test จากนั้นเลือกแก้ไขข้อบกพร่อง
'<TestName>' จากแถบข้างของไฟล์ต้นฉบับ ASfP จะเลือกandroid_testโมดูลที่ใกล้ที่สุดซึ่งมีsrcsรวมไฟล์และตั้งชื่อการกำหนดค่า
<module>, <module>:<SimpleClass> หรือ <module>:<SimpleClass>#<method>
ASfP จะเรียกใช้ atest ด้วย --wait-for-debugger อ่านแอตทริบิวต์ package
เป้าหมายจาก AndroidManifest.xml ของโมดูล รอให้กระบวนการนั้นทำงานใน
อุปกรณ์ที่เชื่อมต่อ และแนบดีบักเกอร์ Java

แก้ไขข้อบกพร่องของเป้าหมาย cc_test และ rust_test ภายใต้ LLDB
หากต้องการแก้ไขข้อบกพร่องของโมดูลทดสอบ C++ หรือ Rust (cc_test, cc_test_host, rust_test หรือ rust_test_host) ให้คลิกไอคอน Android.bp ที่กัตเตอร์ แล้วเลือกแก้ไขข้อบกพร่อง
'<TestName>' ASfP จะเปิดใช้ไบนารีทดสอบที่คอมไพล์ภายใต้โปรแกรมแก้ไขข้อบกพร่อง LLDB ในตัวแทนที่จะเรียกใช้ผ่าน atest
กำหนดค่าการกำหนดค่าการทดสอบ Soong
เปิดเรียกใช้ > แก้ไขการกำหนดค่า แล้วเลือกการกำหนดค่า 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) ดังนี้- การทดสอบแบบ 2 เป้าหมาย (
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."
- การทดสอบแบบ 2 เป้าหมาย (
- งานก่อนการเปิดตัว (สร้างโมดูลทดสอบดั้งเดิมและติดตั้งใช้งานด้วย atest)
การกำหนดค่า Soong Test ทุกรายการจะมีงานก่อนการเปิดตัว 2 รายการโดย
ค่าเริ่มต้น
- สร้างโมดูลทดสอบเนทีฟ: สร้าง
<module>-target(สำหรับอุปกรณ์) หรือ<module>-host(สำหรับโฮสต์) ก่อนเริ่ม LLDB - ติดตั้งใช้งานด้วย atest: เมื่อแก้ไขข้อบกพร่องในอุปกรณ์ จะเรียกใช้
atest <module> --collect-tests-only --disable-teardown -it -s <serial> -- --abi <abi>เพื่อให้ Tradefed พุชการขึ้นต่อกันของการทดสอบและเรียกใช้ Target Preparer ก่อนที่ LLDB จะเปิดใช้ไบนารี วางเคอร์เซอร์เหนือชิปDeploy with atest เพื่อดูตัวอย่างคำสั่งatestที่แน่นอน หากต้องการ ทำซ้ำได้เร็วขึ้นเมื่อมีการขึ้นต่อกันในอุปกรณ์อยู่แล้ว ให้นำ Deploy with atest ออกเพื่อให้ ASfP พุชเฉพาะไบนารีทดสอบโดยตรง เมื่อคุณเลือกเรียกใช้ใน: โฮสต์ ASfP จะข้ามติดตั้งใช้งานด้วย การทดสอบโดยอัตโนมัติ
- สร้างโมดูลทดสอบเนทีฟ: สร้าง
- แก้ไขตัวเลือกและโปรแกรมแก้ไขข้อบกพร่อง (การ์ดตัวเลือก LLDB): ใช้แก้ไขตัวเลือก
เพื่อเพิ่มฟิลด์กำหนดค่าที่ไม่บังคับ
- อาร์กิวเมนต์ของโปรแกรม (ระบบปฏิบัติการ, การทดสอบ C++ และ Rust เท่านั้น):
อาร์กิวเมนต์เพิ่มเติมที่ส่งไปยังไบนารี
cc_testหรือrust_testโดยตรง หลังจากตัวกรอง--gtest_filterหรือlibtestเมื่อทำการแก้ไขข้อบกพร่อง - อาร์กิวเมนต์ atest (Test): แฟล็กเพิ่มเติมที่ส่งไปยัง
atestเมื่อเรียกใช้การทดสอบหรือเมื่อเตรียมอุปกรณ์ด้วยDeploy with atest - โปรแกรมแก้ไขข้อบกพร่อง (การทดสอบ C++ และ Rust เท่านั้น): แสดงเมื่อ โมดูล เป็นเป้าหมาย
cc_test*หรือrust_test*สลับการ์ดตัวเลือก LLDB (เช่น หยุดเมื่อเข้า แคชสัญลักษณ์ในเซสชัน โหลดสัญลักษณ์ตามต้องการ หรือด้วย Visualizer ของ Rust สำหรับการทดสอบ Rust) คลิกรีเซ็ตเป็นค่าเริ่มต้นเพื่อรีเซ็ตเทมเพลตอุปกรณ์หรือโฮสต์ที่ใช้งานอยู่ หรือเพิ่มไดเรกทอรีสัญลักษณ์ คำสั่ง Init, Pre-run, Post-run หรือ Exit และ Launch JSON (การตั้งค่า DAP) จากแก้ไขตัวเลือก > Debugger
- อาร์กิวเมนต์ของโปรแกรม (ระบบปฏิบัติการ, การทดสอบ C++ และ Rust เท่านั้น):
อาร์กิวเมนต์เพิ่มเติมที่ส่งไปยังไบนารี

ดูผลการทดสอบ
ความคืบหน้าในการดำเนินการทดสอบ สถานะผ่านหรือไม่ผ่าน สแต็กเทรซ และบันทึกของอุปกรณ์ จะปรากฏแบบเรียลไทม์ภายในหน้าต่างเครื่องมือเรียกใช้หรือแก้ไขข้อบกพร่องใน ASfP
เคล็ดลับในการทดสอบ
- เรียกใช้การทดสอบที่กำหนดเป้าหมาย: ทดสอบเมธอดแต่ละรายการจากแถบด้านข้างของเอดิเตอร์ โดยไม่ต้องเรียกใช้ชุดการทดสอบทั้งหมด
- ใช้สแนปชอตของ Cuttlefish: เมื่อเรียกใช้การทดสอบอุปกรณ์ในอุปกรณ์เสมือนจริง Cuttlefish ให้ใช้สแนปชอตเพื่อกู้คืนสถานะอุปกรณ์ที่สะอาดระหว่างการเรียกใช้
- ตรวจสอบบันทึกการสร้าง Soong: หากการทดสอบคอมไพล์ไม่สำเร็จก่อนที่จะเรียกใช้ ให้ตรวจสอบหน้าต่างเครื่องมือ Soong เพื่อดูการวินิจฉัยของคอมไพเลอร์