将 List<DataBean> 存入二维 Object[][]
Store List<DataBean> into two dimention Object[][]
我正在尝试将 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)] has no
parameters defined but was found to be using a data provider (either
explicitly specified or inherited from class level annotation). Data
provider mismatch Method: testdata([Parameter{index=0,
type=com.mind.DataBean, declaredAnnotations=[]}]) Arguments:
[(com.mind.DataBean) com.mind.DataBean@78b66d36,(com.mind.DataBean)
com.mind.DataBean@5223e5ee]
有人可以帮我将 List<DataBean>
数据存储在 Object[][]
中,以便我的测试方法对每组数据执行
数据以矩阵形式存储在二维数组中。
假设有一个 3x3 数组,那么矩阵表示将是
1 2 1
3 4 2
1 2 1
作为数据提供者return 二维数组为数据驱动测试的测试方法提供数据。所以需要提到 Object[][]
适当的大小。我在 JSON 文件中有 2 组数据,我正在反序列化为一个 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;
我正在尝试将 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)] has no parameters defined but was found to be using a data provider (either explicitly specified or inherited from class level annotation). Data provider mismatch Method: testdata([Parameter{index=0, type=com.mind.DataBean, declaredAnnotations=[]}]) Arguments: [(com.mind.DataBean) com.mind.DataBean@78b66d36,(com.mind.DataBean) com.mind.DataBean@5223e5ee]
有人可以帮我将 List<DataBean>
数据存储在 Object[][]
中,以便我的测试方法对每组数据执行
数据以矩阵形式存储在二维数组中。
假设有一个 3x3 数组,那么矩阵表示将是
1 2 1
3 4 2
1 2 1
作为数据提供者return 二维数组为数据驱动测试的测试方法提供数据。所以需要提到 Object[][]
适当的大小。我在 JSON 文件中有 2 组数据,我正在反序列化为一个 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;