Citrus-framework - 单独的 DataProvider class
Citrus-framework - DataProvider in a separate class
我可以在单独的 class 中创建数据提供程序并在带有 @Factory 注释的测试 class 中使用它吗?
例如:
数据提供者class:
public class DataProvider {
private static ServiceBase<SomeService> service;
@Autowired
public void setService(ServiceBase<ApiTestHttpRequest> service) {
DataProvider.service = service;
}
private static Object[][] data = null;
public static final String NAME = "testData";
@org.testng.annotations.DataProvider(name = NAME, parallel = true)
public static Object[][] loadDataToTest() {
if (data == null) {
...
}
return data;
}
}
测试class:
public class SomeTests extends TestNGCitrusTestRunner {
TestData testData;
@Factory(dataProvider = DataProvider.NAME, dataProviderClass = DataProvider.class)
public SomeTests(TestData testData){
this.testData = testData;
}
...
}
我找到了解决方案。我通过以下方式解决了这个问题:
public class DataProvider {
private static Object[][] data = null;
public static final String NAME = "testData";
@org.testng.annotations.DataProvider(name = NAME, parallel = true)
public static Object[][] loadDataToTest() {
if (data == null) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("citrus-context.xml");
ServiceBase<SomeService> service = (ServiceBase<SomeService>)applicationContext.getBean(*nameOfTheBean*);
List<SomeService> testData = (List<ApiTestHttpRequest>) service.getTestData();
...
}
return data;
}
}
我可以在单独的 class 中创建数据提供程序并在带有 @Factory 注释的测试 class 中使用它吗?
例如:
数据提供者class:
public class DataProvider {
private static ServiceBase<SomeService> service;
@Autowired
public void setService(ServiceBase<ApiTestHttpRequest> service) {
DataProvider.service = service;
}
private static Object[][] data = null;
public static final String NAME = "testData";
@org.testng.annotations.DataProvider(name = NAME, parallel = true)
public static Object[][] loadDataToTest() {
if (data == null) {
...
}
return data;
}
}
测试class:
public class SomeTests extends TestNGCitrusTestRunner {
TestData testData;
@Factory(dataProvider = DataProvider.NAME, dataProviderClass = DataProvider.class)
public SomeTests(TestData testData){
this.testData = testData;
}
...
}
我找到了解决方案。我通过以下方式解决了这个问题:
public class DataProvider {
private static Object[][] data = null;
public static final String NAME = "testData";
@org.testng.annotations.DataProvider(name = NAME, parallel = true)
public static Object[][] loadDataToTest() {
if (data == null) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("citrus-context.xml");
ServiceBase<SomeService> service = (ServiceBase<SomeService>)applicationContext.getBean(*nameOfTheBean*);
List<SomeService> testData = (List<ApiTestHttpRequest>) service.getTestData();
...
}
return data;
}
}