โมดูลการทดสอบใหม่แต่ละรายการต้องมีไฟล์การกำหนดค่าเพื่อกำหนดระบบบิลด์ พร้อมข้อมูลเมตาของโมดูล ทรัพยากร Dependency ของเวลาคอมไพล์ และวิธีการแพ็กเกจ ตอนนี้ Android ใช้ระบบบิลด์ของ Soong ได้ง่ายขึ้นแล้ว การกำหนดค่าการทดสอบ
Soong ใช้ไฟล์ Blueprint หรือ .bp
ซึ่งเป็นคำอธิบายแบบประกาศอย่างง่ายคล้าย JSON ของโมดูลที่จะสร้าง รูปแบบนี้มาแทนที่ระบบแบบอิงตามผู้ผลิต
ที่ใช้ในรุ่นก่อนหน้า ดูไฟล์อ้างอิง Soong
ในแดชบอร์ดการผสานรวมอย่างต่อเนื่องเพื่อดูรายละเอียดทั้งหมด
เพื่อรองรับการทดสอบที่กำหนดเองหรือใช้ ความเข้ากันได้กับชุดเครื่องมือทดสอบ (CTS) ของ Android โปรดทำตามข้อกำหนดต่อไปนี้ การกำหนดค่าการทดสอบที่ซับซ้อน แทน
ตัวอย่าง
รายการด้านล่างมาจากไฟล์การกำหนดค่า Blueprint ตัวอย่างนี้ /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",
ต้องมีการตั้งค่า name
เมื่อระบุประเภทโมดูล android_test
(ที่จุดเริ่มต้นของบล็อก) ซึ่งจะตั้งชื่อโมดูลของคุณ และผลลัพธ์ที่ได้
ระบบจะตั้งชื่อ APK ให้เหมือนกันและขึ้นต้นด้วย .apk
เช่น ในกรณีนี้
APK การทดสอบที่ได้ชื่อว่า HelloWorldTests.apk
นอกจากนี้
ตั้งชื่อเป้าหมายที่สร้างขึ้นสำหรับโมดูล เพื่อให้คุณใช้ make [options]
<HelloWorldTests>
เพื่อสร้างโมดูลการทดสอบและทรัพยากร Dependency ทั้งหมดได้
static_libs: ["androidx.test.runner"],
การตั้งค่า static_libs
จะสั่งให้ระบบบิลด์รวมเนื้อหา
ของโมดูลที่ระบุลงใน APK ผลลัพธ์ของโมดูลปัจจุบัน ซึ่งหมายความว่า
โมดูลที่มีชื่อแต่ละโมดูลจะสร้างไฟล์ .jar
และเนื้อหาในไฟล์
ใช้สําหรับการแปลค่าการอ้างอิงคลาสพาธระหว่างเวลาคอมไพล์
รวมไว้ใน APK ที่ได้
โมดูล androidx.test.runner
เป็นโมดูลที่คอมไพล์ไว้ล่วงหน้าสำหรับไลบรารี AndroidX Test Runner ซึ่งประกอบด้วย Test Runner AndroidJUnitRunner
AndroidJUnitRunner
รองรับเฟรมเวิร์กการทดสอบ JUnit4 และเปลี่ยนไปใช้โค้ดอื่นแทน
InstrumentationTestRunner
ใน Android 10 อ่านเพิ่มเติม
เกี่ยวกับการทดสอบแอป Android ที่ทดสอบแอปใน Android
หากคุณกำลังสร้างโมดูลการใช้เครื่องมือใหม่ คุณควรเริ่มต้นด้วย
ไลบรารี androidx.test.runner
เป็นตัวดำเนินการทดสอบ แผนผังแหล่งที่มาของแพลตฟอร์ม
ยังรวมถึงกรอบการทดสอบอื่นๆ ที่มีประโยชน์ เช่น ub-uiautomator
mockito-target
, easymock
และอื่นๆ
certificate: "platform",
การตั้งค่า certificate
จะสั่งให้ระบบบิลด์ลงนาม APK ด้วยใบรับรองเดียวกับแพลตฟอร์มหลัก จำเป็นต้องระบุหากการทดสอบใช้ลายเซ็น
สิทธิ์หรือ API ที่ป้องกันไว้ โปรดทราบว่าวิธีนี้เหมาะสำหรับแพลตฟอร์มต่อเนื่อง
แต่ไม่ควรใช้ในโมดูลการทดสอบ CTS โปรดทราบว่าตัวอย่างนี้
ใช้การตั้งค่าใบรับรองนี้เพื่อจุดประสงค์ในการอธิบายเท่านั้น: รหัสทดสอบ
ของตัวอย่าง ไม่จำเป็นต้องลงชื่อ apk ทดสอบด้วย
ใบรับรองแพลตฟอร์มพิเศษ
หากคุณเขียนการใช้เครื่องมือสำหรับคอมโพเนนต์ที่อยู่นอก
เซิร์ฟเวอร์ระบบ กล่าวคือมีแพ็กเกจ
คล้ายกับ APK ของแอปทั่วไป
เว้นแต่ว่าแอปสร้างขึ้นในอิมเมจของระบบ
และอาจเป็นแอปที่ได้รับสิทธิ์
เครื่องมือของคุณจะกำหนดเป้าหมายที่แพ็กเกจแอปหรือไม่ (ดูด้านล่าง
ส่วนที่เกี่ยวกับไฟล์ Manifest) ของคอมโพเนนต์ ในกรณีนี้ แอปพลิเคชันของคุณ
Makefile อาจมีการตั้งค่า certificate
ของตัวเอง และเครื่องมือของคุณ
ควรใช้การตั้งค่าเดิม เนื่องจาก APK ทดสอบและ APK ของแอปต้องลงนามด้วยใบรับรองเดียวกันจึงจะกำหนดเป้าหมายเครื่องมือวัดผลในแอปที่ทดสอบได้
ในกรณีอื่นๆ คุณไม่จำเป็นต้องใช้การตั้งค่านี้เลย เช่น ระบบบิลด์
จะรับรองด้วยใบรับรองเริ่มต้นในตัว โดยอิงตามบิลด์
และโดยทั่วไปจะเรียกว่า dev-keys
test_suites: ["device-tests"],
การตั้งค่า test_suites
ทำให้เทรดค้นพบการทดสอบได้อย่างง่ายดาย
ชุดทดสอบการรวมศูนย์ เพิ่มชุดโปรแกรมอื่นๆ ได้ที่นี่ เช่น CTS
อาจมีการแชร์การทดสอบ
${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
การตั้งค่าที่ไม่บังคับ
การตั้งค่าที่ไม่บังคับต่อไปนี้รวบรวมคำอธิบายไว้
test_config: "path/to/hello_world_test.xml"
การตั้งค่า test_config
จะแนะนำระบบบิลด์ที่เป้าหมายการทดสอบต้องใช้
การกำหนดค่าที่เฉพาะเจาะจง โดยค่าเริ่มต้น AndroidTest.xml
ข้าง Android.bp
จะเชื่อมโยงกับการกำหนดค่า
auto_gen_config: true
การตั้งค่า auto_gen_config
จะระบุว่าควรสร้างการกำหนดค่าการทดสอบหรือไม่
โดยอัตโนมัติ หากไม่มี AndroidTest.xml
ถัดจาก Android.bp
ค่านี้
ไม่จำเป็นต้องตั้งค่าเป็น "จริง" อย่างชัดแจ้ง
require_root: true
การตั้งค่า require_root
จะสั่งให้ระบบบิลด์เพิ่ม RootTargetPreparer
ไปยังการกำหนดค่าการทดสอบที่สร้างขึ้นโดยอัตโนมัติ การดำเนินการนี้เป็นการรับประกันการทดสอบให้ทำงานด้วยรูท
สิทธิ์
test_min_api_level: 29
การตั้งค่า test_min_api_level
จะสั่งให้ระบบบิลด์เพิ่ม
MinApiLevelModuleController ลงในการกำหนดค่าการทดสอบที่สร้างขึ้นโดยอัตโนมัติ เมื่อมีการเทรด
การรวมศูนย์เรียกใช้การกำหนดค่าการทดสอบ ระบบจะข้ามการทดสอบหากพร็อพเพอร์ตี้ของอุปกรณ์
จาก ro.product.first_api_level
< test_min_api_level