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