java - 当与 DataProvider 绑定(bind)时,Testng @Factory 方法失败

标签 java testng

我有一个 testng DataProvider 和 Factory 注解类,它根据数据提供者提供的各种数据动态执行测试类。

这是类(class):

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.invoke(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.invoke(FactoryMethod.java:82) ... 17 更多

知道出了什么问题吗?

最佳答案

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

关于java - 当与 DataProvider 绑定(bind)时,Testng @Factory 方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26368831/

相关文章:

java - 射线平方交集

java - Intellij IDEA for java 上的 UnitTest 自动运行器

selenium-webdriver - Selenium 测试的测试依赖性

java - 如何使用注释在 testng + maven 中分离单元测试和集成测试?

java - 通过 testng 执行一个又一个的 Selenium 测试,无需重新启动浏览器

java - 在 Android 中解决缩短的 url

java - Java 使用什么机制不允许将数组引用重新分配给另一个具有更大类型的引用?

java - 在多个二维数组中搜索相似条目的代码

java - 同一测试类多个<test>无法运行

java - 从Maven迁移到Gradle导致意外异常