有没有办法将参数传递给TestNG测试而不使用@DataProvider& XML中的参数?

时间:2017-04-13 13:49:06

标签: java testng

目前,我使用@DataProvider从excel读取数据并将其传递给只有一个 @Test 。通常,此数据包含测试用例的执行流程,这使我能够并行运行不同的测试用例,从而消除对修改testng.xml的依赖。

上述方法的问题是我无法在外部确定优先级或维护依赖性。有没有办法,我可以从另一个类中启动包含在TestNG类中的@Test以及参数,这样我就可以保持excel表中提到的依赖关系。

1 个答案:

答案 0 :(得分:1)

@Factory带注释的方法可以提供帮助 您可以在其中调用其他测试类的构造函数,然后在@Test@Before*@After*带注释的方法中访问参数。

public class MainProvider {

    @Factory(dataProvider = "main", dataProviderClass = MainProvider.class)
    public Object[] prepare(ParameterType first, ParameterType second) {
        return new Object[]{new SimpleTest(firstParameter, secondParameter)};
    }

    @DataProvider(name = "main")
    public Iterator<Object[]> dataProvider() {
        List<Object[]> parameters = new ArrayList<>();

        //Fill it with your data (this can be, of course, in a loop):
        parameters.add(new Object[] {parameter1, anotherParameter1});
        parameters.add(new Object[] {parameter2, anotherParameter2});

        return parameters.iterator();
    }
}