将列表< databean>存储到二维对象[][]

2cmtqfgy  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(258)

我正在尝试将一个json对象数组反序列化为一个java对象数组。我使用数据提供者将这个数据组合传递给测试方法,以便测试方法对每个数据集执行。
我创建了如下所述的数据提供程序方法,并对json进行了反序列化:

@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()};
}

试验方法:

@Test(dataProvider = "jsonData")
public void testdata(DataBean dataBean) {
    System.out.println(dataBean.getUsername() + "============" + dataBean.getPassword());

}

和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:[public void com.mind.dataproviderutil.testdata(com.mind.databean)]未定义参数,但发现正在使用数据提供程序(显式指定或从类级别注解继承)。数据提供程序不匹配方法:testdata([parameter{index=0,type=com.mind.databean,declaredannotations=[]}])参数:[(com.mind.databean)com.mind。databean@78b66d36,(com.mind.databean)com.mind。databean@5223e5ee]
有人能帮我吗 List<DataBean> 数据输入 Object[][] 所以我的测试方法对每一组数据都执行

d7v8vwbk

d7v8vwbk1#

数据以矩阵形式存储在二维数组中。
假设有一个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;

相关问题