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

ก่อนอื่น โปรดทำความเข้าใจการจัดการตัวเลือกใน 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