diff --git a/src/test/java/test/skip/github1632/AfterListenerSkipSample.java b/src/test/java/test/skip/github1632/AfterListenerSkipSample.java
new file mode 100644
index 0000000000..f30809083c
--- /dev/null
+++ b/src/test/java/test/skip/github1632/AfterListenerSkipSample.java
@@ -0,0 +1,29 @@
+package test.skip.github1632;
+
+import org.testng.IInvokedMethod;
+import org.testng.IInvokedMethodListener;
+import org.testng.ITestResult;
+import org.testng.SkipException;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
+@Listeners(AfterListenerSkipSample.MySkipTestListener.class)
+public class AfterListenerSkipSample {
+
+ @BeforeMethod
+ void beforeMethod() {
+ }
+
+ @Test
+ void shouldNotBeExecuted() {
+ }
+
+ public static class MySkipTestListener implements IInvokedMethodListener {
+
+ @Override
+ public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
+ throw new SkipException("skip");
+ }
+ }
+}
diff --git a/src/test/java/test/skip/github1632/SpringSample.java b/src/test/java/test/skip/github1632/BeforeListenerSkipSample.java
similarity index 79%
rename from src/test/java/test/skip/github1632/SpringSample.java
rename to src/test/java/test/skip/github1632/BeforeListenerSkipSample.java
index fde555e0c1..9aa3149550 100644
--- a/src/test/java/test/skip/github1632/SpringSample.java
+++ b/src/test/java/test/skip/github1632/BeforeListenerSkipSample.java
@@ -9,8 +9,8 @@
import org.testng.annotations.Test;
// Sample from https://github.com/spring-projects/spring-framework/issues/26387#issuecomment-760326643
-@Listeners(SpringSample.MySkipTestListener.class)
-public class SpringSample {
+@Listeners(BeforeListenerSkipSample.MySkipTestListener.class)
+public class BeforeListenerSkipSample {
@BeforeMethod
void beforeMethod() {
@@ -26,9 +26,5 @@ public static class MySkipTestListener implements IInvokedMethodListener {
public void beforeInvocation(IInvokedMethod invokedMethod, ITestResult testResult) {
throw new SkipException("skip");
}
-
- @Override
- public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
- }
}
}
diff --git a/src/test/java/test/skip/github1632/IssueTest.java b/src/test/java/test/skip/github1632/IssueTest.java
index 1b415fd869..ea52142ab9 100644
--- a/src/test/java/test/skip/github1632/IssueTest.java
+++ b/src/test/java/test/skip/github1632/IssueTest.java
@@ -23,14 +23,26 @@ public void runTest() {
}
@Test
- public void runSpringSample() {
- InvokedMethodNameListener listener = run(SpringSample.class);
+ public void runBeforeListenerSkipSample() {
+ InvokedMethodNameListener listener = run(BeforeListenerSkipSample.class);
assertThat(listener.getResult("shouldNotBeExecuted").getStatus()).isEqualTo(ITestResult.SKIP);
}
@Test
- public void runNoConfigSpringSample() {
- InvokedMethodNameListener listener = run(NoConfigSpringSample.class);
+ public void runNoConfigBeforeListenerSample() {
+ InvokedMethodNameListener listener = run(NoConfigBeforeListenerSample.class);
+ assertThat(listener.getResult("shouldNotBeExecuted").getStatus()).isEqualTo(ITestResult.SKIP);
+ }
+
+ @Test
+ public void runAfterListenerSkipSample() {
+ InvokedMethodNameListener listener = run(AfterListenerSkipSample.class);
+ assertThat(listener.getResult("shouldNotBeExecuted").getStatus()).isEqualTo(ITestResult.SKIP);
+ }
+
+ @Test
+ public void runNoConfigAfterListenerSample() {
+ InvokedMethodNameListener listener = run(NoConfigAfterListenerSample.class);
assertThat(listener.getResult("shouldNotBeExecuted").getStatus()).isEqualTo(ITestResult.SKIP);
}
}
diff --git a/src/test/java/test/skip/github1632/NoConfigAfterListenerSample.java b/src/test/java/test/skip/github1632/NoConfigAfterListenerSample.java
new file mode 100644
index 0000000000..51b9b16880
--- /dev/null
+++ b/src/test/java/test/skip/github1632/NoConfigAfterListenerSample.java
@@ -0,0 +1,24 @@
+package test.skip.github1632;
+
+import org.testng.IInvokedMethod;
+import org.testng.IInvokedMethodListener;
+import org.testng.ITestResult;
+import org.testng.SkipException;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
+@Listeners(NoConfigAfterListenerSample.MySkipTestListener.class)
+public class NoConfigAfterListenerSample {
+
+ @Test
+ void shouldNotBeExecuted() {
+ }
+
+ public static class MySkipTestListener implements IInvokedMethodListener {
+
+ @Override
+ public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
+ throw new SkipException("skip");
+ }
+ }
+}
diff --git a/src/test/java/test/skip/github1632/NoConfigSpringSample.java b/src/test/java/test/skip/github1632/NoConfigBeforeListenerSample.java
similarity index 72%
rename from src/test/java/test/skip/github1632/NoConfigSpringSample.java
rename to src/test/java/test/skip/github1632/NoConfigBeforeListenerSample.java
index 321cf5bd75..828fd4866b 100644
--- a/src/test/java/test/skip/github1632/NoConfigSpringSample.java
+++ b/src/test/java/test/skip/github1632/NoConfigBeforeListenerSample.java
@@ -4,13 +4,12 @@
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;
import org.testng.SkipException;
-import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
// Sample from https://github.com/spring-projects/spring-framework/issues/26387#issuecomment-760326643
-@Listeners(NoConfigSpringSample.MySkipTestListener.class)
-public class NoConfigSpringSample {
+@Listeners(NoConfigBeforeListenerSample.MySkipTestListener.class)
+public class NoConfigBeforeListenerSample {
@Test
void shouldNotBeExecuted() {
@@ -22,9 +21,5 @@ public static class MySkipTestListener implements IInvokedMethodListener {
public void beforeInvocation(IInvokedMethod invokedMethod, ITestResult testResult) {
throw new SkipException("skip");
}
-
- @Override
- public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
- }
}
}
diff --git a/src/test/java/test_result/AfterListenerSample.java b/src/test/java/test_result/AfterListenerSample.java
new file mode 100644
index 0000000000..bc7a409056
--- /dev/null
+++ b/src/test/java/test_result/AfterListenerSample.java
@@ -0,0 +1,57 @@
+package test_result;
+
+import org.testng.Assert;
+import org.testng.IInvokedMethod;
+import org.testng.IInvokedMethodListener;
+import org.testng.ITestResult;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
+@Listeners(AfterListenerSample.MySkipTestListener.class)
+public class AfterListenerSample {
+
+ @Test
+ public void failedTest() {
+ }
+
+ @Test(expectedExceptions = IllegalStateException.class, enabled = false)
+ public void failedTest2() {
+ throw new IllegalStateException();
+ }
+
+ @Test
+ public void skippedTest() {
+ }
+
+ @Test
+ public void succeedTest() {
+ Assert.fail();
+ }
+
+ @Test
+ public void succeedTest2() {
+ throw new IllegalStateException();
+ }
+
+ public static class MySkipTestListener implements IInvokedMethodListener {
+
+ @Override
+ public void afterInvocation(IInvokedMethod method, ITestResult result) {
+ switch (method.getTestMethod().getMethodName()) {
+ case "failedTest":
+ case "failedTest2":
+ result.setStatus(ITestResult.FAILURE);
+ break;
+ case "skippedTest":
+ result.setStatus(ITestResult.SKIP);
+ break;
+ case "succeedTest":
+ case "succeedTest2":
+ result.setStatus(ITestResult.SUCCESS);
+ break;
+ default:
+ throw new RuntimeException("Unknown method name: " + method.getTestMethod().getMethodName());
+ }
+ }
+ }
+}
diff --git a/src/test/java/test_result/BeforeListenerSample.java b/src/test/java/test_result/BeforeListenerSample.java
new file mode 100644
index 0000000000..1f79df73c5
--- /dev/null
+++ b/src/test/java/test_result/BeforeListenerSample.java
@@ -0,0 +1,54 @@
+package test_result;
+
+import org.testng.*;
+import org.testng.annotations.Listeners;
+import org.testng.annotations.Test;
+
+@Listeners(BeforeListenerSample.MySkipTestListener.class)
+public class BeforeListenerSample {
+
+ @Test
+ public void failedTest() {
+ }
+
+ @Test(expectedExceptions = IllegalStateException.class, enabled = false)
+ public void failedTest2() {
+ throw new IllegalStateException();
+ }
+
+ @Test
+ public void skippedTest() {
+ }
+
+ @Test
+ public void succeedTest() {
+ Assert.fail();
+ }
+
+ @Test
+ public void succeedTest2() {
+ throw new IllegalStateException();
+ }
+
+ public static class MySkipTestListener implements IInvokedMethodListener {
+
+ @Override
+ public void beforeInvocation(IInvokedMethod method, ITestResult result) {
+ switch (method.getTestMethod().getMethodName()) {
+ case "failedTest":
+ case "failedTest2":
+ result.setStatus(ITestResult.FAILURE);
+ break;
+ case "skippedTest":
+ result.setStatus(ITestResult.SKIP);
+ break;
+ case "succeedTest":
+ case "succeedTest2":
+ result.setStatus(ITestResult.SUCCESS);
+ break;
+ default:
+ throw new RuntimeException("Unknown method name: " + method.getTestMethod().getMethodName());
+ }
+ }
+ }
+}
diff --git a/src/test/java/test_result/github1197/GitHub1197Sample.java b/src/test/java/test_result/GitHub1197Sample.java
similarity index 96%
rename from src/test/java/test_result/github1197/GitHub1197Sample.java
rename to src/test/java/test_result/GitHub1197Sample.java
index 1c8e4b8c27..5cc8c8b5e8 100644
--- a/src/test/java/test_result/github1197/GitHub1197Sample.java
+++ b/src/test/java/test_result/GitHub1197Sample.java
@@ -1,4 +1,4 @@
-package test_result.github1197;
+package test_result;
import org.testng.Assert;
import org.testng.ITestResult;
diff --git a/src/test/java/test_result/ResultStatusTest.java b/src/test/java/test_result/ResultStatusTest.java
new file mode 100644
index 0000000000..6e23d0a2e7
--- /dev/null
+++ b/src/test/java/test_result/ResultStatusTest.java
@@ -0,0 +1,62 @@
+package test_result;
+
+import org.testng.TestNG;
+import org.testng.annotations.Test;
+import test.InvokedMethodNameListener;
+import test.SimpleBaseTest;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ResultStatusTest extends SimpleBaseTest {
+
+ @Test
+ public void testGitHub1197() {
+ TestNG tng = create(GitHub1197Sample.class);
+
+ // A skipped method is not supposed to be run but, here, it's the goal of the feature
+ InvokedMethodNameListener listener = new InvokedMethodNameListener(true, true);
+ tng.addListener(listener);
+
+ tng.run();
+
+ assertThat(listener.getSucceedMethodNames()).containsExactly("succeedTest", "succeedTest2");
+ assertThat(listener.getFailedBeforeInvocationMethodNames()).isEmpty();
+ assertThat(listener.getFailedMethodNames()).containsExactly("failedTest"); // , "failedTest2");
+ assertThat(listener.getSkippedMethodNames()).isEmpty();
+ assertThat(listener.getSkippedAfterInvocationMethodNames()).containsExactly("skippedTest");
+ }
+
+ @Test
+ public void testBeforeListener() {
+ TestNG tng = create(BeforeListenerSample.class);
+
+ // A skipped method is not supposed to be run but, here, it's the goal of the feature
+ InvokedMethodNameListener listener = new InvokedMethodNameListener(true, true);
+ tng.addListener(listener);
+
+ tng.run();
+
+ assertThat(listener.getSucceedMethodNames()).containsExactly("succeedTest", "succeedTest2");
+ assertThat(listener.getFailedBeforeInvocationMethodNames()).isEmpty();
+ assertThat(listener.getFailedMethodNames()).containsExactly("failedTest"); // , "failedTest2");
+ assertThat(listener.getSkippedMethodNames()).isEmpty();
+ assertThat(listener.getSkippedAfterInvocationMethodNames()).containsExactly("skippedTest");
+ }
+
+ @Test
+ public void testAfterListener() {
+ TestNG tng = create(AfterListenerSample.class);
+
+ // A skipped method is not supposed to be run but, here, it's the goal of the feature
+ InvokedMethodNameListener listener = new InvokedMethodNameListener(true, true);
+ tng.addListener(listener);
+
+ tng.run();
+
+ assertThat(listener.getSucceedMethodNames()).containsExactly("succeedTest", "succeedTest2");
+ assertThat(listener.getFailedBeforeInvocationMethodNames()).isEmpty();
+ assertThat(listener.getFailedMethodNames()).containsExactly("failedTest"); // , "failedTest2");
+ assertThat(listener.getSkippedMethodNames()).isEmpty();
+ assertThat(listener.getSkippedAfterInvocationMethodNames()).containsExactly("skippedTest");
+ }
+}
diff --git a/src/test/java/test_result/github1197/GitHub1197Test.java b/src/test/java/test_result/github1197/GitHub1197Test.java
deleted file mode 100644
index af33747bb3..0000000000
--- a/src/test/java/test_result/github1197/GitHub1197Test.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package test_result.github1197;
-
-import org.testng.ITestNGListener;
-import org.testng.TestNG;
-import org.testng.annotations.Test;
-import test.InvokedMethodNameListener;
-import test.SimpleBaseTest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-public class GitHub1197Test extends SimpleBaseTest {
-
- @Test
- public void testGitHub1197() {
- TestNG tng = create(GitHub1197Sample.class);
-
- // A skipped method is not supposed to be run but, here, it's the goal of the feature
- InvokedMethodNameListener listener = new InvokedMethodNameListener(true, true);
- tng.addListener((ITestNGListener) listener);
-
- tng.run();
-
- assertThat(listener.getSucceedMethodNames()).containsExactly("succeedTest", "succeedTest2");
- assertThat(listener.getFailedMethodNames()).containsExactly("failedTest"); // , "failedTest2");
- assertThat(listener.getSkippedAfterInvocationMethodNames()).containsExactly("skippedTest");
- }
-}
diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml
index 6b7cb0388e..15057bfad4 100644
--- a/src/test/resources/testng.xml
+++ b/src/test/resources/testng.xml
@@ -189,7 +189,7 @@
-
+