我尝试在TestNG和arquillian中使用@DataProvider,但是当我使用我创建的类时,我想不出它为什么不能工作。
如果我将它与字符串一起使用,或者任何原始数据类型,我的@Test方法就会成功地接收到DataProvider填充的对象。
@DataProvider(name="test")
public Object[][] createdata1() {
return new Object[] { {"test1"}, {"test2"}, {"test2"} };
}上面的方法有效,但是
@DataProvider(name="test")
public Object[][] createdata1() {
return new Object[] { {new User("test1")}, {new User("test2")}, {new User("test2")}};
}不会的。第二个方法只给出空指针。
有什么想法吗?
发布于 2014-03-30 19:39:08
相反,请返回以下内容。
return new Object[][]{
{new User("test1")},
{new User("test2")},
{new User("test2")}};更好的是,如果经常使用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;
}因此,以下内容更易于解密->
@DataProvider(name="test")
public Object[][] createdata1() {
return provideData(new User("Test1"), new User("Test2"), new User("Test3"));发布于 2013-10-21 20:51:33
您必须返回数组,这个语法是由n个测试用例的n个参数驱动的。因此,正确的语法是每个测试返回一个User。
package testng;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class SomeTest {
@DataProvider(name = "test")
public Object[][] createdata() {
return new Object[][] {
new Object[] { new User("test1") },
new Object[] { new User("test2") },
new Object[] { new User("test2") } };
}
@Test(dataProvider = "test")
public void xxx_happyPath_success(User user) {
Assert.assertNotNull(user);
}
}发布于 2018-06-21 21:41:37
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataPro {
@Test(dataProvider = "Sender")
public void Receiver(String first, String second)
{
System.out.print(first);
System.out.print(second);
}
@DataProvider
public Object[][] Sender()
{
Object[][] data = new Object[2][2];
data[0][0] = "a";
data[0][1] = "b";
data[1][0] = "c";
data[1][1] = "d";
return data;
}
}https://stackoverflow.com/questions/19504038
复制相似问题