java - 如何在 TestNG 的数据提供程序中提供对象和字符串

标签 java selenium testng testng-dataprovider

我有很少的依赖 TC 组合在一起。 TC2 有自己的一些数据,并且还依赖于 TC1 的一些数据。 我无法在数据提供程序中提供对象数组和字符串。

我尝试在数据提供程序中提供对象和字符串的混合。

@DataProvider(name="mydataprovider")
    protected Object[][] dataprovider(){
        Object[][] returnObj = new Object[this.classObject.size()][];
        for(int index=0; index < this.classObject.size(); index++) {
            returnObj[index] = new Object[]{this.classObject.get(index)};
        }
        return new Object[][]{
            {"name","position"}, {returnObj}
    };

    }

@Test(dataProvider="mydataprovider", dependsOnMethods = {"TC1"})
public void testMethod(String name, String position, MyClassData classData) 
{
//Test Steps
}

我面临数据提供商不匹配的问题 org.testng.internal.reflect.MethodMatcherException

最佳答案

您可以将任何内容传递给方法,这是代码的简化版本。

class MyClassData {
    String abc;
    MyClassData(String abc) {
        this.abc = abc;
    }
    @Override
    public String toString() {
        return "MyClassData [abc=" + abc + "]";
    }

}
@DataProvider(name="mydataprovider")
    protected Object[][] dataprovider(){
        MyClassData[] obj = new MyClassData[2];
        obj[0] = new MyClassData("abc");
        obj[1] = new MyClassData("def");

        return new Object[][]{
            {"name","position", obj}
    };
//If you want to pass one obj as one param then, in which case your test method should accept MyClassData object instead of MyClassData[]
return new Object[][]{
                {"name","position", obj[0]},
                {"name","position", obj[1]},
        };

    }

@Test(dataProvider="mydataprovider")
public void testMethod(String name, String position, MyClassData[] classData) 
{

    System.out.println(name + " " + position + " " + classData[0]);
    System.out.println(name + " " + position + " " + classData[1]);
//Test Steps
}

关于java - 如何在 TestNG 的数据提供程序中提供对象和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58220708/

相关文章:

java - TestNG 没有执行套件中的所有测试类

java - 我尝试重命名照片以将它们移动到另一个文件夹。我的代码有什么问题导致 File.renameTo(File) 返回 false?

java - 将源从 1.5 更改为 1.7(使用 cocos 命令行工具)

amazon-web-services - 在 ECS Docker 中为 Selenium Chrome Hub 动态设置环境变量

java - Selenium SouceLabs - java.lang.NoClassDefFoundError : org/apache/commons/codec/binary/Base64

java - 使用 WebdriverManager 在多个测试线程中注册驱动程序时出错

java - hibernate 中有没有一种方法可以在一个字符串中操作多个查询

java - 将列名更改为其他时,TableView提供错误

firefox - 升级到 Firefox 18 后,使用 Python 的 Selenium Webdriver 崩溃

java - TestNG 中的动态方法选择器不起作用