के माध्यम से विफल परीक्षण परीक्षण परिणाम TestNG retrying failed tests doesn't output the correct test results पर पोस्ट किए गए समाधान के समान, मैं फिनिश (ITestContext संदर्भ) के दौरान एक परीक्षण श्रोता का उपयोग करके एक (डुप्लिकेट) परीक्षण परिणाम निकालने का प्रयास कर रहा हूं।हटाएं (डुप्लिकेट) परीक्षण श्रोता
हालांकि context.getFailedTests() के साथ परिणाम को हटाने के बाद। निष्कासन परिणाम (परिणाम) ठीक काम करता प्रतीत होता है (परिणाम वास्तव में हटा दिया जाता है), ऐसा लगता है कि "कुछ अन्य स्थान" जहां परिणाम कारण से खींचे जा रहे हैं निर्माण अभी भी विफल रहता है।
यह भी ध्यान दें कि जब मैं ऊपर दिए गए आलेख से नमूना परीक्षण चलाता हूं (जिसमें एक डुप्लिकेट विफलता को हटाया जाता है और एक उत्तीर्ण परीक्षण होता है), तो मुझे "परीक्षण परिणाम" (अपेक्षा के अनुसार साफ़ नहीं किया गया) में अंतर मिलता है। "सूट परिणाम" (अपेक्षित के रूप में डुप्लिकेट विफलता हटा दी गई)।
और, रिपोर्टिंग को विफल करने के लिए परिणामों को खींचने के लिए रिपोर्ट कहां से खींच रही है? या यह सिर्फ यह है कि मैं असफल परीक्षणों की सफाई करने से पहले परिणाम खींच रहा हूं ...?
===============================================
Default test
Tests run: 3, Failures: 2, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 2, Failures: 1, Skips: 0
===============================================
संपादित करें: बस स्पष्ट करने के लिए, हम Maven के साथ उन लोगों परीक्षण चल रहे हैं, और वे अपने हैं, इसलिए हम उन्हें फेल सेफ प्लगइन के साथ चलाते हैं। समस्या यह है कि भले ही यह प्रतीत होता है कि परीक्षण हटा दिए जाते हैं, एमवीएन सत्यापित अभी भी बिल्ड में विफल रहता है क्योंकि यह असफलताओं को बनाने के बावजूद पाया जाता है।
और यदि ग्रहण से इस तरह के एक परीक्षण को चलाते हैं, भले ही परीक्षण हटा दिए जाते हैं, सूट खत्म होने पर विफलताओं को अभी भी लॉग में मुद्रित किया जा रहा है।
रेट्रीएनलर के बारे में: मैं रेट्रीएनलियर अच्छा/सर्वोत्तम अभ्यास का उपयोग करने पर विचार नहीं करता, लेकिन यदि आप खुद को ऐसी स्थिति में पाते हैं जहां आपको समस्या को हल करने की आवश्यकता है, उदा। आपने एक परीक्षण सूट विरासत में लिया है जो RetryAnalyzer पर निर्भर है, आपको यह उपयोगी मिल सकता है।
ListenerApadter:
public class MyTestListenerAdapter extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result) {
if (result.getMethod().getRetryAnalyzer() != null) {
MyRetryAnalyzer retryAnalyzer = (MyRetryAnalyzer)result.getMethod().getRetryAnalyzer();
if(retryAnalyzer.isRetryAvailable()) {
result.setStatus(ITestResult.SKIP);
} else {
result.setStatus(ITestResult.FAILURE);
}
Reporter.setCurrentTestResult(result);
}
}
@Overrride
public void onFinish(ITestContext context) {
Iterator<ITestResult> failedTestCases =context.getFailedTests().getAllResults().iterator();
while (failedTestCases.hasNext()) {
System.out.println("failedTestCases");
ITestResult failedTestCase = failedTestCases.next();
ITestNGMethod method = failedTestCase.getMethod();
if (context.getFailedTests().getResults(method).size() > 1) {
System.out.println("failed test case remove as dup:" + failedTestCase.getTestClass().toString());
failedTestCases.remove();
} else {
if (context.getPassedTests().getResults(method).size() > 0) {
System.out.println("failed test case remove as pass retry:" + failedTestCase.getTestClass().toString());
failedTestCases.remove();
}
}
}
}
}
RetryAnalizer:
क्या आपको इस समस्या का समाधान मिला है? – MrSpock
हम कुछ "उपयोग करने योग्य" को समझते हैं, हालांकि मैं अंततः जो चाहता था वह नहीं। मैं कोड को साफ करने और इसे पोस्ट करने के लिए अगले कुछ दिनों में कुछ समय खोजने का प्रयास करूंगा। – mac
अपना समाधान देखने के लिए उत्सुक! – MrSpock