การกำหนดค่าบิลด์อย่างง่าย

โมดูลการทดสอบใหม่แต่ละรายการต้องมีไฟล์การกำหนดค่าเพื่อกำหนดระบบบิลด์ พร้อมข้อมูลเมตาของโมดูล ทรัพยากร 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