데이터 공급자가 제공 한 다양한 데이터를 기반으로 테스트 클래스를 동적으로 실행하는 testng DataProvider 및 Factory annotated 클래스가 있습니다. 여기 Testng DataProvider와 결합 할 때 @Factory 메서드가 실패합니다.
는 클래스이다 :DataProvider
==================
@DataProvider (name="GenericDataProvider", parallel=true)
public static Object[][] genericDP(Method method, ITestContext context) throws Exception{
Map<String,String> arguments = DataProviderUtils.resolveDataProviderArguments(method);
List<Map<String,String>> valList = null;
if (arguments.containsKey("propFile")) {
String file = arguments.get("propFile");
InputStream stream = BaseDataProvider.class.getClassLoader().getResourceAsStream(file);
TestUtilities testUtil = new TestUtilities();
valList = testUtil.parseXML(testUtil.getStringFromInputStream(stream), "dataset");
}
return new Object[][] { { valList } };
}
The Factory class
=====================
@Factory
@Test(dataProviderClass=BaseDataProvider.class, dataProvider="GenericDataProvider")
@DataProviderArguments({"propFile=psgITest.xml"})
public void runMultipleAccountProvisioningTestsWithDifferentUniversityPartners(List<Map<String,String>> datasets) {
String partner = null;
String source = null;
for (Map<String,String> dataset : datasets) {
for (String data : dataset.keySet()) {
if ("partner".equalsIgnoreCase(data)) {
partner = dataset.get(data);
} else if ("source".equalsIgnoreCase(data)) {
source = dataset.get(data);
}
if (null != partner && null != source) {
new com.example.psgITestAccountProvisioning001(partner, source);
new com.example.psgITestAccountProvisioning002(partner, source);
}
}
}
}
psgITest.xml는 성질() 예외가 발생했습니다
<?xml version="1.0" encoding="UTF-8"?>
<data>
<dataset>
<partner>abc</partner>
<source>xyz</source>
</dataset>
</data>
Exception
================
org.testng.TestNGException:
아래의 형식으로 출하시에있어서 클래스 com.example.psgITestAccountProvisioning.runMultipleAccountProvisioningTestsWithDifferentUniversityPartners를 파일 (FactoryMethod.java:93) at org.testng.internal.TestNGClassFinder (TestNGClassFinder.java:140) at org.testng.TestRunner.initMethods (TestRunner.java:409) at org.testng.TestRunner.init (TestRunner.java:235) at org.testng.TestRunner.init (TestRunner.java:205) at org.testng.remote.RemoteTestNG $ 1.newTestRunner (RemoteTestNG.java:170) at org.testng.remote.RemoteTestNG $ 1.newTestRunner (RemoteTestNG.java:141) at org.testng.remote.RemoteTestNG $ DelegatingTestRunnerFactory.newTestRunner (RemoteTestNG.java : 271) at org.testng.SuiteRunner $ ProxyTestRunnerFactory.newTestRunner (SuiteRunner.java:561) at org.testng.SuiteRunner.init (SuiteRunner.java:157) at org.testng.SuiteRunner. (SuiteRunner.java:111)) at org.testng.TestNG.createSuiteRunner (TestNG.java:1299) at org.testng.TestNG.createSuiteRu nners (TestNG.java:1286) at org.testng.TestNG.runSuitesLocally (TestNG.java:1140) at org.testng.TestNG.run (TestNG.java:1057) at org.testng.remote.RemoteTestNG. 실행 (RemoteTestNG.java:111) at org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:204) at org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:175) 발생 원인 : java. org.testng.internal.FactoryMethod.invoke (FactoryMethod.java:82) 에서 lang.NullPointerException ... 더보기 (17)
어떤 생각이 무엇이 잘못이야?