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

โมดูลทดสอบใหม่แต่ละโมดูลต้องมีไฟล์การกำหนดค่าเพื่อกำหนดทิศทางระบบบิลด์ด้วยข้อมูลเมตาของโมดูล การขึ้นต่อกันเวลาคอมไพล์ และคำแนะนำในการบรรจุภัณฑ์ Android ตอนนี้ใช้ สร้างระบบ Soong สำหรับการตั้งค่าการทดสอบง่าย

Soong ใช้พิมพ์เขียวหรือ .bp ไฟล์ซึ่งเป็น JSON เหมือนคำอธิบายที่เปิดเผยที่เรียบง่ายของโมดูลเพื่อสร้าง รูปแบบนี้จะแทนที่ระบบที่ใช้ Make-based ที่ใช้ในรุ่นก่อนหน้า ดู ไฟล์อ้างอิง Soong บน อย่างต่อเนื่องบูรณาการแดชบอร์ด สำหรับรายละเอียด

เพื่อรองรับการทดสอบที่กำหนดเองหรือใช้ Android เข้ากันได้ Test Suite (CTS), ทำตาม ที่ซับซ้อนการกำหนดค่าการทดสอบ แทน

ตัวอย่าง

รายการด้านล่างนี้มาจากตัวอย่างแฟ้มการกำหนดค่าพิมพ์เขียวนี้: /platform_testing/tests/example/instrumentation/Android.bp

รวมสแนปชอตไว้ที่นี่เพื่อความสะดวก:

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

หมายเหตุ android_test ประกาศที่จุดเริ่มต้นบ่งชี้นี้คือการทดสอบ รวมทั้ง android_app จะตรงกันข้ามบ่งชี้นี้แทนที่จะเป็นแพคเกจสร้าง

การตั้งค่า

การตั้งค่าต่อไปนี้รวบรวมคำอธิบาย:

    name: "HelloWorldTests",

name ตั้งค่าเป็นสิ่งจำเป็นเมื่อ android_test ประเภทโมดูลที่ระบุไว้ (ในช่วงเริ่มต้นของบล็อก) มันทำให้ชื่อเพื่อโมดูลของคุณและส่งผลให้เอพีเคจะมีชื่อเดียวกันและมี .apk ต่อท้ายเช่นในกรณีนี้ผลการทดสอบ apk มีชื่อเป็น HelloWorldTests.apk นอกจากนี้ยังกำหนดชื่อเป้าหมายให้สำหรับโมดูลของคุณเพื่อให้คุณสามารถใช้ make [options] <HelloWorldTests> การสร้างโมดูลการทดสอบของคุณและการอ้างอิงทั้งหมด

    static_libs: ["android-support-test"],

static_libs ตั้งค่าแนะสร้างระบบที่จะรวมเนื้อหาของโมดูลชื่อลงใน apk ที่เกิดจากโมดูลปัจจุบัน ซึ่งหมายความว่าแต่ละโมดูลชื่อที่คาดว่าจะผลิต .jar ไฟล์และเนื้อหาของมันจะถูกนำมาใช้สำหรับการแก้ปัญหาการอ้างอิง classpath ในระหว่างการรวบรวมเวลาเช่นเดียวกับการรวมอยู่ใน apk ที่เกิด

ในตัวอย่างนี้ สิ่งที่อาจเป็นประโยชน์โดยทั่วไปสำหรับการทดสอบ:

android-support-test เป็นที่สร้างไว้ล่วงหน้าสำหรับห้องสมุดสนับสนุน Android ทดสอบซึ่งรวมถึงการทดสอบการวิ่งใหม่ AndroidJUnitRunner : เปลี่ยนสำหรับเลิกตอนนี้ในตัว InstrumentationTestRunner ด้วยการสนับสนุนสำหรับกรอบการทดสอบ JUnit4 อ่านเพิ่มเติมได้ที่ แอพพลิเคทดสอบบน Android

หากคุณกำลังสร้างโมดูลเครื่องมือใหม่ที่คุณควรเริ่มต้นด้วย android-support-test ห้องสมุดขณะวิ่งทดสอบของคุณ แหล่งต้นไม้แพลตฟอร์มนี้ยังรวมถึงกรอบการทดสอบที่มีประโยชน์อื่น ๆ เช่น ub-uiautomator , mockito-target , easymock และอื่น ๆ

    certificate: "platform",

certificate การตั้งค่าแนะสร้างระบบที่จะลงนาม apk ที่มีใบรับรองเดียวกันเป็นแพลตฟอร์มหลัก สิ่งนี้จำเป็นหากการทดสอบของคุณใช้การอนุญาตที่มีการป้องกันลายเซ็นหรือ API โปรดทราบว่านี้เหมาะสำหรับการทดสอบอย่างต่อเนื่องแพลตฟอร์ม แต่ไม่ควรนำมาใช้ในการทดสอบโมดูล CTS โปรดทราบว่าตัวอย่างนี้ใช้การตั้งค่าใบรับรองนี้เพื่อจุดประสงค์ในการแสดงภาพประกอบเท่านั้น: รหัสทดสอบของตัวอย่างไม่จำเป็นต้องเซ็นชื่อ apk ทดสอบด้วยใบรับรองแพลตฟอร์มพิเศษ

หากคุณกำลังเขียนเครื่องมือวัดสำหรับส่วนประกอบของคุณที่อยู่นอกเซิร์ฟเวอร์ระบบ กล่าวคือ มันถูกบรรจุมากหรือน้อยเหมือน apk ของแอปทั่วไป ยกเว้นว่ามันสร้างไว้ในอิมเมจระบบและอาจเป็นแอปที่มีสิทธิพิเศษ มีโอกาสที่เครื่องมือของคุณจะ กำลังกำหนดเป้าหมายแพ็คเกจแอป (ดูหัวข้อด้านล่างเกี่ยวกับรายการ) ขององค์ประกอบของคุณ ในกรณีนี้ 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