package test.configuration; import static org.assertj.core.api.Assertions.assertThat; import org.testng.ITestNGListener; import org.testng.TestNG; import org.testng.annotations.Test; import org.testng.xml.XmlSuite; import org.testng.xml.XmlTest; import test.InvokedMethodNameListener; import test.SimpleBaseTest; import test.configuration.github1338.FirstGitHub1338Sample; import test.configuration.github1338.SecondGitHub1338Sample; import test.configuration.github1338.ThirdGitHub1338Sample; public class BaseGroupsTest extends SimpleBaseTest { @Test(description = "Verify that a base class with a BeforeGroups method only gets invoked once, " + "no matter how many subclasses it has") public void verifySingleInvocation() { TestNG tng = create(BaseGroupsASampleTest.class, BaseGroupsBSampleTest.class); InvokedMethodNameListener listener = new InvokedMethodNameListener(); tng.addListener((ITestNGListener) listener); tng.run(); assertThat(listener.getSkippedMethodNames()).isEmpty(); assertThat(listener.getFailedMethodNames()).isEmpty(); assertThat(listener.getSucceedMethodNames()).containsOnlyOnce("beforeGroups"); } @Test(description = "https://github.com/cbeust/testng/issues/1338") public void verifyBeforeGroupUseAppropriateInstance() { XmlSuite suite = createXmlSuite("Suite"); XmlTest test = createXmlTest(suite, "Test", SecondGitHub1338Sample.class, FirstGitHub1338Sample.class, ThirdGitHub1338Sample.class); createXmlGroups(test, "group1"); TestNG tng = create(suite); InvokedMethodNameListener listener = new InvokedMethodNameListener(); tng.addListener((ITestNGListener) listener); tng.run(); assertThat(listener.getSkippedMethodNames()).isEmpty(); assertThat(listener.getFailedMethodNames()).isEmpty(); } }