2014-10-14 1 views
0

데이터 공급자가 제공 한 다양한 데이터를 기반으로 테스트 클래스를 동적으로 실행하는 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)

어떤 생각이 무엇이 잘못이야?

답변

0

문제가 발생했습니다. Factory 메소드의 반환 유형은 Object []

이어야합니다.
관련 문제