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