Testng 如何在dataprovider中保持数据的顺序?

Testng 如何在dataprovider中保持数据的顺序?,testng,testng-dataprovider,Testng,Testng Dataprovider,情况:我有两个测试a()和b()。使用“dependsOnMethods”参数使b()依赖于a()。我有两个测试的不同数据集。有没有办法确保在执行测试时保持数据的顺序 示例: @DataProvider(name = "test1") public Object[][] createData1() { return new Object[][] { { "Google" }, { "Microsoft"}, }; } @DataProvider

情况:我有两个测试a()和b()。使用“dependsOnMethods”参数使b()依赖于a()。我有两个测试的不同数据集。有没有办法确保在执行测试时保持数据的顺序

示例:

@DataProvider(name = "test1")
public Object[][] createData1() {
    return new Object[][] {
        { "Google" },
        { "Microsoft"}, 
    };
}

@DataProvider(name = "test2")
public Object[][] createData2() {
    return new Object[][] {
        { "Apple"},
        { "Yahoo"}, 
    };
}


@Test(dataProvider = "test1")
public void verifyData1(String n1) {
    System.out.println(n1);
}

@Test(dataProvider = "test2", dependsOnMethods="verifyData1")
public void verifyData2(String n1) {
    System.out.println(n1);
}
我希望结果总是这样 谷歌,苹果,微软,雅虎。 或 微软、雅虎、谷歌、苹果

但不是 谷歌,雅虎,微软,苹果,或谷歌,微软,苹果,雅虎

这意味着,如果test1使用其dataprovider中的第一组参数运行,那么test2也应该使用其dataprovider中的第一组参数运行。 test1的dataprovider中的第二组参数是否在第一组参数之前运行并不重要,只要第二个测试在运行第一组参数之前还使用其dataprovider中的第二组参数运行。有没有办法做到这一点


刚刚意识到这可以通过使用GROUPBY instances参数来解决。(我在testngxml中找不到这个选项,因为我使用的是旧版本。)。我将尝试升级我的testNg并发布更新

testng首先对从日期提供程序接收的所有数据运行“verifyData1”方法,然后运行“verifyData2”,因此输出将是:谷歌、微软、苹果、雅虎

依赖方法按类分组。如果方法b()依赖于方法a(),并且您拥有包含这些方法的类的多个实例(由于数据提供程序的工厂),则调用顺序为:

verifyData1(“谷歌”)
verifyData1(“Microsoft”)
verifyData2(“苹果”)
verifyData2(“雅虎”)
在所有实例调用其a()方法之前,TestNG不会运行b()

如果您想订购:

verifyData1(“谷歌”)
verifyData2(“苹果”)
verifyData1(“Microsoft”)
verifyData2(“雅虎”)
您可以使用XML属性按实例分组


我将我的test ng版本升级到了6.8.8,并使用了分组实例,但它没有解决我的问题。我知道这是默认行为。有办法改变吗?没错,文件中有说明: