|
6 | 6 | import org.testng.ITestResult; |
7 | 7 |
|
8 | 8 | public class SkipOnFailureListener implements ITestListener { |
9 | | - |
10 | 9 | 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'"; |
13 | 24 |
|
14 | 25 | @Override |
15 | 26 | 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)) { |
18 | 35 | result.setStatus(ITestResult.SKIP); |
19 | 36 | } else { |
20 | 37 | testFailure = false; |
21 | | - testName = ""; |
22 | | - useCaseName = ""; |
| 38 | + testGroupNameHavingTestFailure = ""; |
| 39 | + testClassNameHavingTestFailure = ""; |
| 40 | + testMethodNameHavingTestFailure = ""; |
23 | 41 | } |
24 | 42 | } |
25 | 43 |
|
26 | 44 | @Override |
27 | 45 | public void onTestFailure(ITestResult result) { |
| 46 | + if (result == null) { |
| 47 | + ReportPortalLogger.logErrorMessage("SkipOnFailureListener: onTestStart: result is NULL."); |
| 48 | + } |
28 | 49 | 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); |
31 | 62 | } |
32 | 63 |
|
33 | 64 | @Override |
34 | 65 | 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(); |
36 | 72 | } |
37 | 73 |
|
38 | 74 | @Override |
39 | 75 | 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"); |
43 | 84 | 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"); |
47 | 85 | } else { |
48 | 86 | testFailure = false; |
49 | | - testName = ""; |
50 | | - useCaseName = ""; |
| 87 | + testClassNameHavingTestFailure = ""; |
| 88 | + testGroupNameHavingTestFailure = ""; |
| 89 | + testMethodNameHavingTestFailure = ""; |
51 | 90 | } |
52 | 91 | } |
53 | 92 |
|
|
0 commit comments