जांच किसी भी वजह से फ़ेल हो सकती है. कभी-कभी टेस्ट को दोबारा पास कराना ही काफ़ी होता है (उसमें गड़बड़ी होने की वजह से, जैसे कि अंदर के इन्फ़्रास्ट्रक्चर में समस्याएं होने की वजह से). Tradefed को इस तरह कॉन्फ़िगर किया जा सकता है कि वह अपने-आप फिर से कोशिश करे.
अपने-आप फिर से कोशिश करने की सुविधा का मकसद, सभी टेस्ट को फिर से चलाने से बचना है. यह सिर्फ़ उन टेस्ट को फिर से चलाता है जो पूरे नहीं हो पाए थे. इससे, टेस्ट पूरा होने में लगने वाले समय में काफ़ी बचत होती है.
Tradefed, इटरेशन सुविधा की मदद से, कई बार टेस्ट चलाने की सुविधा भी देता है, ताकि इटरेशन की सुविधा की मदद से, गड़बड़ी का पता लगाया जा सके. इस मामले में, सभी टेस्ट फिर से चलाए जाएंगे. अगर कोई भी दोहराव पूरा नहीं होता है, तो टेस्ट पूरा नहीं होगा.
अपने-आप फिर से कोशिश करने की सुविधा चालू करें
अपने-आप होने वाली फिर से कोशिश करने की प्रोसेस को फिर से कोशिश करने के ऑब्जेक्ट से कंट्रोल किया जाता है. इससे सुविधा को चालू करने के लिए दो विकल्प मिलते हैं: 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
नतीजे कैसे दिखते हैं?
डिफ़ॉल्ट रूप से, नतीजों की रिपोर्ट करने वाले लोगों को सभी कोशिशों के एग्रीगेट किए गए नतीजे मिलेंगे.
उदाहरण के लिए: RETRY_ANY_FAILURE
के लिए एक Fail
और एक Pass
होने पर, एग्रीगेट किया गया Pass
दिखेगा. ऐसा इसलिए, क्योंकि फिर से कोशिश करने पर गड़बड़ी ठीक हो गई.
रिपोर्टर को एग्रीगेट नहीं किए गए नतीजे मिल सकते हैं. ऐसा करने के लिए, उन्हें ISupportGranularResults इंटरफ़ेस को एक्सटेंड़ करना होगा. इससे, यह पता चलता है कि ऐप्लिकेशन, ज़्यादा जानकारी वाले (एग्रीगेट नहीं किए गए) नतीजों के साथ काम करता है.
लागू करने से जुड़ी जानकारी
टेस्ट केस लेवल पर, गड़बड़ियों को फिर से चलाने के लिए अपने-आप फिर से कोशिश करने की सुविधा को चालू करने के लिए, ITestFilterReceiver को लागू करें.
अगर ITestFilterReceiver को लागू नहीं किया जा सकता, तो फिर से चलाने की सुविधा को मैन्युअल तरीके से कंट्रोल करने के लिए, IAutoRetriableTest को लागू किया जा सकता है. InstalledInstrumentationsTest, उस इंटरफ़ेस को लागू करने का उदाहरण है.