package test.factory.github1083; import org.testng.ITestNGListener; import org.testng.TestNG; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import test.InvokedMethodNameListener; import test.SimpleBaseTest; import java.lang.reflect.Field; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; public class GitHub1083Test extends SimpleBaseTest { @Test(dataProvider = "dp") public void testArrayFactorySample(Class<?> sampleClass) throws NoSuchFieldException, IllegalAccessException { List<String> parameters = getParameters(sampleClass); parameters.clear(); TestNG tng = create(sampleClass); InvokedMethodNameListener listener = new InvokedMethodNameListener(); tng.addListener((ITestNGListener) listener); tng.run(); assertThat(parameters).containsExactly("bar"); assertThat(listener.getSucceedMethodNames()).containsExactly("test"); } @DataProvider public static Object[][] dp() { return new Object[][]{ new Object[]{ArrayFactorySample.class}, new Object[]{ConstructorFactorySample.class}, new Object[]{DataProviderArrayFactorySample.class}, new Object[]{DataProviderInstanceInfoFactorySample.class}, new Object[]{InstanceInfoFactorySample.class} }; } public static List<String> getParameters(Class<?> clazz) throws NoSuchFieldException, IllegalAccessException { Field parameters = clazz.getField("parameters"); return (List<String>) parameters.get(null); } }