Java 门店列表<;数据库>;进入二维对象[][]
我试图将json对象数组反序列化为java对象数组。我使用数据提供程序将此数据组合传递给测试方法,以便对每个数据集执行测试方法 我创建了如下所述的数据提供程序方法,并对Json进行了反序列化:Java 门店列表<;数据库>;进入二维对象[][],java,testng,Java,Testng,我试图将json对象数组反序列化为java对象数组。我使用数据提供程序将此数据组合传递给测试方法,以便对每个数据集执行测试方法 我创建了如下所述的数据提供程序方法,并对Json进行了反序列化: @DataProvider(name = "listData") public Object[][] listData() throws FileNotFoundException { Type listType = new TypeToken<List<DataB
@DataProvider(name = "listData")
public Object[][] listData() throws FileNotFoundException {
Type listType = new TypeToken<List<DataBean>>() {
}.getType();
List<DataBean> data = new GsonBuilder().create().fromJson(new FileReader("resources/data.json"), listType);
data.forEach(iterator -> System.out.println(iterator.getUsername() + " : : " + iterator.getPassword()));
return new Object[][]{data.toArray()};
}
和JSON:
[
{
"username": "someuser",
"password": "abc#add"
},
{
"username": "anotheruser",
"password": "daa#add"
}
]
不幸的是,它不起作用。如果我使用下面这样的强类型对象,那么它的工作与预期的一样:
return new Object[][]{{new DataBean("user1", "d121312")},
{new DataBean("user2", "asdsd")}};
错误:
org.testng.internal.reflect.MethodMatcherException:[公共无效]
com.mind.DataProviderUtil.testdata(com.mind.DataBean)]没有
已定义参数,但发现使用了数据提供程序(或
显式指定或继承自类级注释)。资料
提供程序不匹配方法:testdata([参数{index=0,
type=com.mind.DataBean,declaredAnnotations=[]}])参数:
[(com.mind.DataBean)com.mind。DataBean@78b66d36,(com.mind.DataBean)
com.mind。DataBean@5223e5ee]
有人能帮我把
列表
数据存储在对象[][]
中吗?这样我的测试方法就可以对每组数据执行以矩阵形式存储在二维数组中的数据
假设有一个3x3的数组,那么矩阵表示就是
1 2 1
3 4 2
1 2 1
作为数据提供者,返回二维数组,为数据驱动测试的测试方法提供数据。因此,需要提及适当大小的Object[][
。我在JSON文件中有两组数据,我正在反序列化到一个JAVA对象,在我的例子中,该对象是DataBean。所以在这里,我必须提到大小作为Object[dataBean.size()][1]
完整代码:
Type listType = new TypeToken<List<DataBean>>() {
}.getType();
List<DataBean> bean = new GsonBuilder().create().fromJson(new FileReader("resources/data.json"), listType);
bean.forEach(iterator -> System.out.println(iterator.getUsername() + " : : " + iterator.getPassword()));
Object[][] data = new Object[bean.size()][1];
for (int i = 0; i < bean.size(); i++) {
data[i][0] = bean.get(i);
}
return data;
Type listType=new-TypeToken(){
}.getType();
List bean=new GsonBuilder().create().fromJson(新文件读取器(“resources/data.json”),listType);
bean.forEach(迭代器->系统.out.println(迭代器.getUsername()+”:“+迭代器.getPassword());
对象[][]数据=新对象[bean.size()][1];
for(inti=0;i
“如果我使用下面这样的强类型对象,那么它的工作就如预期的那样”;如果可行,您可以作为解决方案(或解决方案)尝试newobject[][]{data.toArray(newdatabean[0])}
,这将创建一个DataBean[]
而不是Object[]
@Marcono1234,谢谢您的回复,但我得到的错误与前面相同
Type listType = new TypeToken<List<DataBean>>() {
}.getType();
List<DataBean> bean = new GsonBuilder().create().fromJson(new FileReader("resources/data.json"), listType);
bean.forEach(iterator -> System.out.println(iterator.getUsername() + " : : " + iterator.getPassword()));
Object[][] data = new Object[bean.size()][1];
for (int i = 0; i < bean.size(); i++) {
data[i][0] = bean.get(i);
}
return data;