การทดสอบอาจล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม และบางครั้งเพียงแค่ทำการทดสอบซ้ำก็เพียงพอที่จะทำให้มันผ่านการทดสอบอีกครั้ง (เนื่องจากความไม่แน่นอน เช่น จากปัญหาในโครงสร้างพื้นฐานพื้นฐาน) คุณสามารถกำหนดค่า Tradefed เพื่อดำเนินการลองใหม่โดยอัตโนมัติได้
หัวใจสำคัญของการลองใหม่อัตโนมัติคือการหลีกเลี่ยงการรันการทดสอบ ทั้งหมดซ้ำ โดยจะรันซ้ำเฉพาะการทดสอบที่ล้มเหลว ส่งผลให้ประหยัดเวลาดำเนินการได้มาก
Tradefed ยังรองรับการทดสอบที่ทำงานหลายครั้งเพื่อตรวจจับความไม่แน่นอนผ่านฟีเจอร์ การวนซ้ำ ในกรณีนี้ การทดสอบทั้งหมดจะดำเนินการซ้ำ และการทดสอบจะล้มเหลวหากการวนซ้ำใดๆ ล้มเหลว
เปิดใช้งานการลองใหม่อัตโนมัติ
การลองใหม่อัตโนมัติจะถูกควบคุมผ่าน ออบเจ็กต์ RetryDecision ซึ่งมีสองตัวเลือกในการเปิดใช้งานคุณสมบัติ: max-testcase-run-count
และ retry-strategy
max-testcase-run-count
ขับเคลื่อนจำนวนการลองใหม่หรือการวนซ้ำที่จะพยายาม มันกำหนดขอบเขตบนเพื่อหลีกเลี่ยงการลองใหม่ตลอดไป retry-strategy
เป็นตัวขับเคลื่อนการตัดสินใจว่าจะลองอีกครั้งอย่างไร ดูส่วนต่อไปนี้สำหรับรายละเอียดเพิ่มเติม
ปิดใช้งานการลองใหม่อัตโนมัติ
ใช้ตัวเลือกต่อไปนี้:
--retry-strategy NO_RETRY
ลองใหม่ล้มเหลว
หากต้องการลองทดสอบความล้มเหลวอีกครั้ง ให้ใช้ตัวเลือกต่อไปนี้:
--retry-strategy RETRY_ANY_FAILURE --max-testcase-run-count X
การดำเนินการนี้จะลองดำเนินการล้มเหลวอีกครั้งจนกว่าจะผ่านหรือจนกว่าจะถึงจำนวนการลองใหม่สูงสุด ขึ้นอยู่กับว่ากรณีใดจะเกิดขึ้นก่อน
การวนซ้ำ
หากต้องการรันการทดสอบซ้ำหลายครั้ง คุณสามารถใช้ตัวเลือกต่อไปนี้:
--retry-strategy ITERATIONS --max-testcase-run-count X
ผลลัพธ์มีลักษณะอย่างไร?
ผู้รายงานผลลัพธ์ตามค่าเริ่มต้นจะได้รับผลรวมของความพยายามทั้งหมด
ตัวอย่างเช่น: Fail
และ Pass
สำหรับ RETRY_ANY_FAILURE
จะส่งผลให้มี Pass
รวมเนื่องจากการลองอีกครั้งเพื่อล้างความล้มเหลว
เป็นไปได้ที่ผู้รายงานจะได้รับผลลัพธ์ที่ไม่ได้รวบรวมไว้ ในการทำเช่นนั้น พวกเขาจำเป็นต้องขยาย อินเทอร์เฟซ ISupportGranularResults ที่ประกาศการสนับสนุนสำหรับผลลัพธ์แบบละเอียด (ไม่รวมรวม)
รายละเอียดการดำเนินการ
หากต้องการเปิดใช้งานการลองใหม่อัตโนมัติเพื่อรันความล้มเหลวอีกครั้งในระดับกรณีทดสอบ ให้ใช้ ITestFilterReceiver
หากคุณไม่สามารถใช้ ITestFilterReceiver ได้ คุณสามารถใช้ IAutoRetriableTest เพื่อควบคุมวิธีการรันซ้ำด้วยตนเอง InstalledInstrumentationsTest คือตัวอย่างการใช้งานอินเทอร์เฟซนั้น