package test.parameters; import org.testng.ITest; import org.testng.ITestNGListener; import org.testng.TestNG; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import org.testng.xml.XmlClass; import org.testng.xml.XmlInclude; import org.testng.xml.XmlSuite; import org.testng.xml.XmlTest; import test.InvokedMethodNameListener; import test.SimpleBaseTest; import static org.assertj.core.api.Assertions.assertThat; public class ParameterOverrideTest extends SimpleBaseTest { enum Status { PASS_TEST, PASS_CLASS, PASS_INCLUDE } @DataProvider public static Object[][] dp() { return new Object[][] { new Object[]{"testOverrideSuite", Status.PASS_TEST}, new Object[]{"classOverrideSuite", Status.PASS_CLASS}, new Object[]{"includeOverrideClass", Status.PASS_INCLUDE}, }; } @Test(dataProvider = "dp") public void testOverrideParameter(String name, Status status) { XmlSuite suite = createXmlSuite("suite"); suite.getParameters().put("a", "Incorrect"); suite.getParameters().put("InheritedFromSuite", "InheritedFromSuite"); XmlTest test = createXmlTest(suite, "test"); test.getLocalParameters().put("InheritedFromTest", "InheritedFromTest"); XmlClass clazz = createXmlClass(test, Override1Sample.class); clazz.getLocalParameters().put("InheritedFromClass", "InheritedFromClass"); XmlInclude includeF = createXmlInclude(clazz, "f"); XmlInclude includeG = createXmlInclude(clazz, "g"); switch (status) { case PASS_TEST: test.getLocalParameters().put("a", "Correct"); break; case PASS_CLASS: clazz.getLocalParameters().put("a", "Correct"); break; case PASS_INCLUDE: includeF.getLocalParameters().put("a", "Correct"); break; } TestNG tng = create(suite); InvokedMethodNameListener tla = new InvokedMethodNameListener(); tng.addListener((ITestNGListener) tla); tng.run(); assertThat(tla.getSucceedMethodNames()).containsExactly( "f(Correct)", "g(InheritedFromSuite,InheritedFromTest,InheritedFromClass)" ); } }