我很难过。我已经通过在线阅读了许多线索,似乎无法找到我正在寻找的解决方案。dependsOnMethods和@Factory
我想要的是在循环中并行运行测试,以便一个测试生成数据,另一个测试使用数据。
我发现传入的ITestContext对于在测试之间存储测试数据很有用。但是,在使用dependsOnMethod时,所有数据生成测试都会在第一个依赖项方法运行之前运行。
有没有办法指定@Factory和@DataProvider的组合来实现我想要的?
public class DependencyTest1 {
private String value;
@DataProvider()
public static Object[][] DependencyTestProvider() {
return new Object[][] {
// Data passed into tests
{ "String1" },
{ "String2" },
};
}
@Factory(dataProvider = "DependencyTestProvider")
public DependencyTest1(String value) {
System.out.println("DataDependencyTest1 Constructor");
System.out.println("String: " + value);
this.value = value;
}
//*****************************************************************************
//*****************************************************************************
@Test(description = "Test Dependency Injection: Generate Test Data", groups = "unit")
public void Test_DependencyInjection_GenerateTestData(ITestContext context, Method method) throws Exception {
System.out.println("Test Name: " + method.getName());
System.out.println("Create Test Data");
System.out.println("String: " + value);
System.out.println("Add data to current test context");
context.setAttribute("value", value);
}
//*****************************************************************************
//*****************************************************************************
@Test(description = "Test Dependency Injection: Extract Test Data",groups = "unit", dependsOnMethods = "Test_DependencyInjection_GenerateTestData")
public void Test_DependencyInjection_ExtractData(ITestContext context, Method method) {
System.out.println("Test Name: " + method.getName());
System.out.println("Extract data from test context");
String value = (String) context.getAttribute("value");
System.out.println("String: " + value);
}
}
测试输出:
DataDependencyTest1构造
字符串:默认测试名称
DataDependencyTest1构造
字符串:字符串1
DataDependencyTest1构造
字符串:String2的
测试名称:Test_DependencyInjection_GenerateTestData
创建创建测试数据
字符串:字符串1
将数据添加到当前的测试情境
测试名称: Test_DependencyInjection_GenerateTestData
创建创建测试数据
字符串:从测试情境Test_DependencyInjection_ExtractData
提取数据
字符串:String2的
将数据添加到当前的测试情境
测试名称String2的
测试名称:Test_ DependencyInjection_ExtractData从测试情境
提取数据
字符串:String2的
现在,这里的问题是...
测试运行_ExtractData()
每次运行_GenerateTestData()
测试方法的时间。但是,依赖性测试似乎只在循环的最后一次迭代中运行。
如何让我的测试顺序是这样的:
Test_DependencyInjection_GenerateTestData - 使用 “的String1”
Test_DependencyInjection_ExtractData - 使用 “的String1”
Test_DependencyInjection_GenerateTestData - 使用 “字符串2”
Test_DependencyInjection_ExtractData - using“String2”