การทดสอบอาจไม่สำเร็จไม่ว่าด้วยเหตุผลใดก็ตาม และบางครั้งการทดสอบอีกครั้งก็เพียงพอที่จะทำให้การทดสอบผ่านอีกครั้ง (เนื่องจากความไม่น่าเชื่อถือ เช่น จากปัญหาในโครงสร้างพื้นฐานที่เกี่ยวข้อง) คุณสามารถกําหนดค่า Tradefed ให้ลองอีกครั้งโดยอัตโนมัติ
หัวใจสําคัญของการลองใหม่อัตโนมัติคือการหลีกเลี่ยงการเรียกใช้การทดสอบทั้งหมดอีกครั้ง โดยจะเรียกใช้เฉพาะการทดสอบที่ไม่สําเร็จเท่านั้น ซึ่งจะประหยัดเวลาในการเรียกใช้ได้อย่างมาก
นอกจากนี้ Tradefed ยังรองรับการเรียกใช้การทดสอบหลายครั้งเพื่อตรวจหาความผิดพลาดผ่านฟีเจอร์การทำซ้ำ ในกรณีนี้ การทดสอบทั้งหมดจะดำเนินการอีกครั้ง และจะทดสอบไม่สำเร็จหากการทำซ้ำใดๆ ล้มเหลว
เปิดใช้การลองอีกครั้งโดยอัตโนมัติ
การลองอีกครั้งอัตโนมัติจะควบคุมผ่านออบเจ็กต์ RetryDecision ซึ่งมี 2 ตัวเลือกในการเปิดใช้ฟีเจอร์ ได้แก่ 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 เป็นตัวอย่างการใช้งานอินเทอร์เฟซดังกล่าว