TestNG上的DataProvider

Bru*_*ebs 1 java testng

我曾尝试将@DataProvider与TestNG和arquillian一起使用,但是当我使用我创建的类时,我无法弄清楚为什么它不起作用.

如果我将它与String或任何原始数据类型一起使用,我的@Test方法将成功接收DataProvider填充的对象.

@DataProvider(name="test")
public Object[][] createdata1() {
    return new Object[] { {"test1"}, {"test2"}, {"test2"} };
}
Run Code Online (Sandbox Code Playgroud)

上面的方法有效,但是

@DataProvider(name="test")
public Object[][] createdata1() {
    return new Object[] { {new User("test1")}, {new User("test2")}, {new User("test2")}};
}
Run Code Online (Sandbox Code Playgroud)

才不是.第二种方法只给我空指针.

有任何想法吗?

Mac*_*ign 6

返回以下内容.

return new Object[][]{
      {new User("test1")},
      {new User("test2")},
      {new User("test2")}};
Run Code Online (Sandbox Code Playgroud)

更好的是,如果经常使用DataProvider,可以在helper类中创建以下帮助器方法,以帮助轻松创建数据

public static Object[][] provideData(Object... arObj) {
    Object[][] arObject = new Object[arObj.length][];

    int index = 0;
    for (Object obj : arObj) {
        arObject[index++] = new Object[]{obj};
    }
    return arObject;
}
Run Code Online (Sandbox Code Playgroud)

因此以下更容易破译 - >

@DataProvider(name="test")
public Object[][] createdata1() {
    return provideData(new User("Test1"), new User("Test2"), new User("Test3"));
Run Code Online (Sandbox Code Playgroud)