采用Iterator<Object[]> dataProvide()方式的数据驱动导致调用顺序的错误!
TestNG数据驱动@DataProvider的方式有两种:
?
第一种: Iterator<Object[]> dataProvide()
第二种: Object[][] dataProvide()
?
其中,当存在@BeforeGroups、@AfterGroups方法时,第一种形式的调用顺序错误:@AfterGroups方法会在函数第一组数据结束后调用。(应该将所有数据都执行一遍才算是group执行结束。) 因此,只能采用Object[][] dataProvide()形式的@DataProvider。
代码修改如下:
修改前:
?
@DataProvider(name = "data")public Iterator<String[]> data(){ List<String[]> list = ... return list.iterator();}?修改后:
?
@DataProvider(name = "data")public Object[][] data(){ List<String[]> list = ... String[][] result = new String[list.size()][]; Return list.toArray(result); }