Java TestNG并行数据提供程序
我希望在类中与数据提供程序并行运行测试方法。 我需要一个数据提供者,它在每次新的测试方法开始为给定的测试运行生成部分动态数据之前都会被调用。让我用伪代码解释一下:Java TestNG并行数据提供程序,java,testng,testng-dataprovider,Java,Testng,Testng Dataprovider,我希望在类中与数据提供程序并行运行测试方法。 我需要一个数据提供者,它在每次新的测试方法开始为给定的测试运行生成部分动态数据之前都会被调用。让我用伪代码解释一下: @DataProvider(parallel=true) public Object[][] dp(){ User user = createNewUser(); return new Object[][]{ {"s1", new AExtendsOtherObject(user), user},
@DataProvider(parallel=true)
public Object[][] dp(){
User user = createNewUser();
return new Object[][]{
{"s1", new AExtendsOtherObject(user), user},
{"s2", new BExtendsOtherObject("any"), user},
}
@Test(dataProvider = "dp")
void test(String s, OtherObject o, User user){
}
<suite name="all" verbose="1" parallel="methods" data-provider-thread-count="5">
@DataProvider(parallel=true)
公共对象[][]dp(){
User User=createNewUser();
返回新对象[][]{
{“s1”,新的AExtendsOtherObject(用户),用户},
{“s2”,新的BExtendsOtherObject(“任何”),用户},
}
@测试(dataProvider=“dp”)
无效测试(字符串s、其他对象o、用户){
}
我怎样才能做到这一点?你试过吗?从公共文件:
好的,现在我意识到我真正想要的是什么,我的问题看起来有点愚蠢。很抱歉。无论如何,我的解决方案如下:
@DataProvider(parallel=true)
public Iterator<Object[]> dp(){
List<Object[]> list = new ArrayList<>();
User user = createNewUser();
list.add(new Object[]{"s1", new AExtendsOtherObject(user), user});
user = createNewUser();
list.add(new Object[] {"s2", new BExtendsOtherObject("any"), user});
return list.iterator();
}
@DataProvider(parallel=true)
公共迭代器dp(){
列表=新的ArrayList();
User User=createNewUser();
添加(新对象[]{“s1”,新AExtendsOtherObject(用户),用户});
user=createNewUser();
添加(新对象[]{“s2”,新的bextensotherobject(“any”),user});
return list.iterator();
}
此解决方案的唯一问题是,如果createNewUser()需要花费大量时间,那么在任何测试方法开始之前,它将立即提前完成。谢谢您的回答,但我无法找到该功能在这种情况下的帮助。