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