2017-04-13 19 views
0

目前,我使用的是从excel中读取数据的@DataProvider,并将其传递给只有一个@Test。通常,这些数据包含测试用例的执行流程,这使我能够运行不同的测试用例并行地消除对修改testng.xml的依赖。有没有办法将参数传递给TestNG测试,而不使用XML中的@DataProvider&parameters?

上述方法的问题是我无法在外部区分优先顺序或保持依赖关系。有没有办法,其中我可以启动@Test包含在TestNG类从另一个类参数,这样我可以保持在Excel表中提到的依赖。

回答

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(); 
    } 
} 
相关问题