From 9770fcd636e43d3c45881dc699828162cb1d4037 Mon Sep 17 00:00:00 2001 From: Anton Velma Date: Thu, 28 Apr 2022 11:37:14 +0300 Subject: [PATCH] fix equals implementation for WrappedTestNGMethod --- .../testng/internal/WrappedTestNGMethod.java | 2 +- .../aftergroups/AfterGroupsBehaviorTest.java | 26 +++++++++++++++++++ .../samples/AfterGroupsSample.java | 13 ++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 testng-core/src/test/java/test/aftergroups/samples/AfterGroupsSample.java diff --git a/testng-core/src/main/java/org/testng/internal/WrappedTestNGMethod.java b/testng-core/src/main/java/org/testng/internal/WrappedTestNGMethod.java index 7fae09b771..688c96dc33 100644 --- a/testng-core/src/main/java/org/testng/internal/WrappedTestNGMethod.java +++ b/testng-core/src/main/java/org/testng/internal/WrappedTestNGMethod.java @@ -366,7 +366,7 @@ public String getQualifiedName() { @Override public boolean equals(Object o) { - return testNGMethod.equals(o); + return o == this || (o instanceof ITestNGMethod && testNGMethod.equals(o)); } @Override diff --git a/testng-core/src/test/java/test/aftergroups/AfterGroupsBehaviorTest.java b/testng-core/src/test/java/test/aftergroups/AfterGroupsBehaviorTest.java index b79bdde0b3..ad2f84827f 100644 --- a/testng-core/src/test/java/test/aftergroups/AfterGroupsBehaviorTest.java +++ b/testng-core/src/test/java/test/aftergroups/AfterGroupsBehaviorTest.java @@ -2,10 +2,15 @@ import static org.assertj.core.api.Assertions.assertThat; +import java.util.ArrayList; +import java.util.List; +import org.testng.IMethodInstance; import org.testng.ITestResult; import org.testng.TestNG; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import org.testng.internal.MethodInstance; +import org.testng.internal.WrappedTestNGMethod; import org.testng.xml.XmlSuite; import org.testng.xml.XmlSuite.FailurePolicy; import test.SimpleBaseTest; @@ -13,6 +18,7 @@ import test.aftergroups.issue165.TestclassSampleWithSkippedMember; import test.aftergroups.issue1880.LocalConfigListener; import test.aftergroups.issue1880.TestClassSample; +import test.aftergroups.samples.AfterGroupsSample; import test.aftergroups.samples.MultipleGroupsSample; import test.beforegroups.issue2359.ListenerAdapter; @@ -54,6 +60,26 @@ public void ensureAfterGroupsInvokedAfterAllTestsWhenMultipleGroupsDefined() { t -> assertThat(t.getEndMillis()).isLessThanOrEqualTo(afterGroup.getStartMillis())); } + @Test + public void ensureAfterGroupsInvokedWhenTestMethodIsWrappedWithWrappedTestNGMethod() { + TestNG tng = new TestNG(); + tng.setTestClasses(new Class[] {AfterGroupsSample.class}); + + tng.setMethodInterceptor( + (methods, context) -> { + List result = new ArrayList<>(methods); + result.add(new MethodInstance(new WrappedTestNGMethod(result.get(0).getMethod()))); + return result; + }); + + ListenerAdapter adapter = new ListenerAdapter(); + tng.addListener(adapter); + + tng.run(); + + assertThat(adapter.getPassedConfiguration()).hasSize(1); + } + private static void runTest( Class clazz, String groups, boolean shouldContinue, String expected) { XmlSuite xmlsuite = createXmlSuite("sample_suite", "sample_test", clazz); diff --git a/testng-core/src/test/java/test/aftergroups/samples/AfterGroupsSample.java b/testng-core/src/test/java/test/aftergroups/samples/AfterGroupsSample.java new file mode 100644 index 0000000000..f767ddc495 --- /dev/null +++ b/testng-core/src/test/java/test/aftergroups/samples/AfterGroupsSample.java @@ -0,0 +1,13 @@ +package test.aftergroups.samples; + +import org.testng.annotations.AfterGroups; +import org.testng.annotations.Test; + +public class AfterGroupsSample { + + @Test(groups = "group-1") + public void someTest() {} + + @AfterGroups(groups = "group-1") + public void afterGroupMethod() {} +}