ส่งตัวเลือกและตัวกรองไปยังชุดและข้อบังคับ

ก่อนอื่น โปรดทำความเข้าใจการจัดการตัวเลือก ใน Tradefed

การตั้งค่า Suite อธิบายเลเยอร์ 2 ชั้นที่มีอยู่ใน โครงสร้าง Suite ดังนี้

  • ชุดทดสอบระดับบนสุด
  • โมดูล

ในบริบท Tradefed ที่ไม่ใช่ชุดทดสอบ คุณไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้ เนื่องจากทุก อ็อปชันจะไปที่การเรียกใช้แบบเต็ม ในบริบทของชุดซอฟต์แวร์ โมดูลจะแยกออกจากชุดซอฟต์แวร์ ดังนั้นตัวเลือกบางอย่างจึงไม่พร้อมใช้งานในระดับของโมดูล

ส่งตัวเลือกไปยังชุดโปรแกรมระดับบนสุด

ชุดทดสอบระดับบนสุดจะทํางานเหมือนกับการกําหนดค่า Tradefed มาตรฐาน โดยการกําหนดค่าทั้งหมด รวมถึงตัวเรียกใช้ชุดทดสอบจะได้รับตัวเลือกทั้งหมดเหมือนกับการกําหนดค่า Tradefed ที่ไม่ใช่ชุดทดสอบ

ส่งตัวเลือกไปยังโมดูล

โดยค่าเริ่มต้น โมดูลจะไม่ได้รับตัวเลือกใดๆ ที่ส่งไปยังคำสั่ง โดยต้องกำหนดเป้าหมายอย่างชัดเจนเพื่อรับตัวเลือกผ่านตัวเลือก module-arg การแยกตัวเลือกของโมดูลนี้ทำให้การแก้ไขข้อบกพร่อง ง่ายขึ้น

ตัวอย่าง

cts-tradefed run cts --module-arg <module-name>:<option-name>:<option-value>

cts-tradefed run cts --module-arg CtsGestureTestCases:collect-tests-only:true

ไวยากรณ์ช่วยให้มั่นใจได้ว่าโมดูลเป้าหมายจะได้รับตัวเลือกที่ระบุ

นอกจากนี้ ยังมีวิธีอื่นๆ ในการส่งตัวเลือกไปยังโมดูล เช่น test-arg ซึ่ง ช่วยให้คุณส่งตัวเลือกไปยังโปรแกรมเรียกใช้การทดสอบของแต่ละโมดูลได้โดยอิงตามประเภทหรือคลาสของโปรแกรมเรียกใช้

ตัวอย่าง

cts-tradefed run cts --test-arg <test-class>:<option-name>:<option-value>

cts-tradefed run cts --test-arg com.android.tradefed.testtype.JarHosttest:collect-tests-only:true

ไวยากรณ์ไม่ได้กำหนดเป้าหมายไปยังโมดูลใดโมดูลหนึ่ง แต่กำหนดเป้าหมายไปยังโปรแกรมเรียกใช้การทดสอบทั้งหมด ของคลาสที่ระบุ test-arg จะพิจารณาเฉพาะการใช้งาน IRemoteTest เป็นตัวรับตัวเลือกที่อาจเกิดขึ้น

ส่งตัวเลือกไปยังคลาสทดสอบ Java ใน java_test_host

หากคุณเพิ่ม @Option ลงในคลาสทดสอบ Java เป็นส่วนหนึ่งของ เป้าหมายการสร้าง java_test_host คุณจะต้องใช้สิ่งต่อไปนี้เพื่อแทรกตัวเลือก ดังกล่าว

cts-tradefed run cts --module-arg <module-name>:set-option:<option-name>:<option-value>

set-option ในบริบทนี้คือตัวเลือกของโปรแกรมเรียกใช้ HostTest จากชุดทดสอบ ที่ห่อหุ้มคลาส Java เพื่อเรียกใช้

หากเป้าหมายไฟล์ JAR สำหรับตัวเลือกมีคลาสทดสอบหลายคลาส โดยค่าเริ่มต้น คลาสทั้งหมดจะต้องมี @option ที่ระบุไว้ หรือใช้ไวยากรณ์ต่อไปนี้เพื่อกำหนดเป้าหมายคลาสเดียว

cts-tradefed run cts --module-arg <module-name>:set-option:<class-name>:<option-name>:<option-value>

ส่งตัวกรองไปยังชุดโปรแกรม

หากต้องการกรองการทดสอบบางรายการออกจากชุดทดสอบ เราจะใช้ --include-filter และ --exclude-filter เพื่อบังคับให้รวมหรือยกเว้นการทดสอบหรือโมดูลหนึ่งๆ ตามลำดับ การยกเว้นมีความสำคัญ

โดยใช้รูปแบบต่อไปนี้ [abi] <module-name> [test name]

ตัวอย่าง

--include-filter CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases

--include-filter armeabi-v7a CtsGestureTestCases android.gesture.cts.GestureTest#testGetStrokes