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