Как предоставить Object и String в поставщике данных для TestNG - PullRequest
0 голосов
/ 03 октября 2019

У меня есть несколько зависимых TC, сгруппированных вместе. TC2 имеет некоторые собственные данные, а также зависит от некоторых данных из TC1. Я не могу предоставить массив Object вместе со строкой в ​​поставщике данных.

Я попытался указать сочетание Object и String в поставщике данных.

@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

1 Ответ

1 голос
/ 04 октября 2019

Вы можете передать что-нибудь в методы, упрощенную версию вашего кода.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...