Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 门店列表<;数据库>;进入二维对象[][]_Java_Testng - Fatal编程技术网

Java 门店列表<;数据库>;进入二维对象[][]

Java 门店列表<;数据库>;进入二维对象[][],java,testng,Java,Testng,我试图将json对象数组反序列化为java对象数组。我使用数据提供程序将此数据组合传递给测试方法,以便对每个数据集执行测试方法 我创建了如下所述的数据提供程序方法,并对Json进行了反序列化: @DataProvider(name = "listData") public Object[][] listData() throws FileNotFoundException { Type listType = new TypeToken<List<DataB

我试图将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()};
}
和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;