Skip to content

Commit 677893e

Browse files
committed
Updated SkipOnFailureListener
1 parent 7014651 commit 677893e

1 file changed

Lines changed: 57 additions & 18 deletions

File tree

src/main/java/com/znsio/reportportal/integration/listener/SkipOnFailureListener.java

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,48 +6,87 @@
66
import org.testng.ITestResult;
77

88
public class SkipOnFailureListener implements ITestListener {
9-
109
private boolean testFailure = false;
11-
private String testName;
12-
private String useCaseName;
10+
private String testGroupNameHavingTestFailure = "";
11+
private String testClassNameHavingTestFailure = "";
12+
private String testMethodNameHavingTestFailure = "";
13+
private String currentTestGroupName = "";
14+
private String currentClassName = "";
15+
private String currentTestMethodName = "";
16+
private String messageTemplate =
17+
"%n\t\tcurrentTestGroupName : '%s'" +
18+
"%n\t\tcurrentTestClassName : '%s'" +
19+
"%n\t\tcurrentTestMethodName : '%s'" +
20+
"%n\t\ttestGroupNameHavingTestFailure : '%s'" +
21+
"%n\t\ttestClassNameHavingTestFailure : '%s'" +
22+
"%n\t\ttestMethodNameHavingTestFailure : '%s'" +
23+
"%n\t\ttestFailure : '%s'";
1324

1425
@Override
1526
public void onTestStart(ITestResult result) {
16-
String currentUseCaseName = result.getTestContext().getCurrentXmlTest().getName();
17-
if (testFailure && currentUseCaseName.equalsIgnoreCase(useCaseName)) {
27+
if (result == null) {
28+
ReportPortalLogger.logErrorMessage("SkipOnFailureListener: onTestStart: result is NULL.");
29+
}
30+
currentTestGroupName = result.getTestContext().getCurrentXmlTest().getName();
31+
currentClassName = result.getMethod().getRealClass().getName();
32+
currentTestMethodName = result.getMethod().getMethodName();
33+
34+
if (testFailure && currentTestGroupName.equalsIgnoreCase(testGroupNameHavingTestFailure)) {
1835
result.setStatus(ITestResult.SKIP);
1936
} else {
2037
testFailure = false;
21-
testName = "";
22-
useCaseName = "";
38+
testGroupNameHavingTestFailure = "";
39+
testClassNameHavingTestFailure = "";
40+
testMethodNameHavingTestFailure = "";
2341
}
2442
}
2543

2644
@Override
2745
public void onTestFailure(ITestResult result) {
46+
if (result == null) {
47+
ReportPortalLogger.logErrorMessage("SkipOnFailureListener: onTestStart: result is NULL.");
48+
}
2849
testFailure = true;
29-
useCaseName = result.getTestContext().getCurrentXmlTest().getName();
30-
testName = result.getMethod().getRealClass().getSimpleName();
50+
testGroupNameHavingTestFailure = result.getTestContext().getCurrentXmlTest().getName();
51+
testClassNameHavingTestFailure = result.getMethod().getRealClass().getSimpleName();
52+
testMethodNameHavingTestFailure = result.getMethod().getMethodName();
53+
currentTestGroupName = testGroupNameHavingTestFailure;
54+
currentClassName = testClassNameHavingTestFailure;
55+
currentTestMethodName = testMethodNameHavingTestFailure;
56+
57+
String prefix = "Test has failed";
58+
String message = String.format("\t" + prefix + messageTemplate,
59+
currentTestGroupName, currentClassName, currentTestMethodName,
60+
testGroupNameHavingTestFailure, testClassNameHavingTestFailure, testMethodNameHavingTestFailure, testFailure);
61+
ReportPortalLogger.logInfoMessage(message);
3162
}
3263

3364
@Override
3465
public void onTestSuccess(ITestResult result) {
35-
// Do nothing
66+
if (result == null) {
67+
ReportPortalLogger.logErrorMessage("SkipOnFailureListener: onTestStart: result is NULL.");
68+
}
69+
currentTestGroupName = result.getTestContext().getCurrentXmlTest().getName();
70+
currentClassName = result.getMethod().getRealClass().getName();
71+
testMethodNameHavingTestFailure = result.getMethod().getMethodName();
3672
}
3773

3874
@Override
3975
public void onTestSkipped(ITestResult result) {
40-
String currentUseCaseName = result.getTestContext().getCurrentXmlTest().getName();
41-
if (testFailure && currentUseCaseName.equalsIgnoreCase(useCaseName)) {
42-
ReportPortalLogger.logDebugMessage("Test: '" + result.getMethod().getMethodName() + "' + SKIPPED because of earlier failure in usecase: '" + useCaseName + "':: Test: " + testName);
76+
if (result == null) {
77+
ReportPortalLogger.logErrorMessage("SkipOnFailureListener: onTestStart: result is NULL.");
78+
}
79+
currentTestGroupName = result.getTestContext().getCurrentXmlTest().getName();
80+
currentClassName = result.getMethod().getRealClass().getName();
81+
currentTestMethodName = result.getMethod().getMethodName();
82+
if (testFailure && currentTestGroupName.equalsIgnoreCase(testGroupNameHavingTestFailure)) {
83+
ReportPortalLogger.logErrorMessage("Test SKIPPED because of earlier failure in usecase");
4384
result.setStatus(ITestResult.SKIP);
44-
System.out.println("Test " + currentUseCaseName + " SKIPPED because of earlier test failure");
45-
ReportPortalLogger.logInfoMessage("Test " + currentUseCaseName + " SKIPPED because of earlier test failure");
46-
ReportPortalLogger.logErrorMessage("Test SKIPPED because of earlier test failure");
4785
} else {
4886
testFailure = false;
49-
testName = "";
50-
useCaseName = "";
87+
testClassNameHavingTestFailure = "";
88+
testGroupNameHavingTestFailure = "";
89+
testMethodNameHavingTestFailure = "";
5190
}
5291
}
5392

0 commit comments

Comments
 (0)