Testng@Factory方法在与DataProvider绑定时失败



我有一个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()引发异常网址:org.testng.internal.FactoryMethod.ioke(FactoryMethod.java:93)网址:org.testng.internal.TestNGClassFinder。(TestNGClassFinder.java:140)网址:org.testng.TestRunner.initMethods(TestRunner.java:409)网址:org.testng.TestRunner.init(TestRunner.java:235)位于org.testng.TestRunner.init(TestRunner.java:205)网址:org.testng.TestRunner.(TestRunner.java:160)网址:org.testng.remote.RemoteTestNG$1.newTestRunner(RemoteTestNG.java:141)位于org.testng.remote.RemoteTestNG$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG.java:271)网址:org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:561)网址:org.testng.SuiteRunner.init(SuiteRunner.java:157)网址:org.testng.SuiteRunner.(SuiteRunner.java:111)网址:org.testng.testng.createSuiteRunner(testng.java:1299)网址:org.testng.testng.createSuiteRunners(testng.java:1286)位于org.testng.testng.runSuitesLocally(testng.java:1140)网址:org.testng.testng.run(testng.java:1057)位于org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)位于org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)网址:org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)导致原因:java.lang.NullPointerException网址:org.testng.internal.FactoryMethod.ioke(FactoryMethod.java:82)…还有17个

知道出了什么问题吗?

遇到问题。Factory方法的返回类型应为Object[]

相关内容

最新更新