读书人

采用Iteratorlt;Object[]gt; dataProvide(

发布时间: 2012-08-15 16:57:17 作者: rapoo

采用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);  }

读书人网 >开源软件

热点推荐