我正在尝试将一个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[][]
所以我的测试方法对每一组数据都执行
1条答案
按热度按时间d7v8vwbk1#
数据以矩阵形式存储在二维数组中。
假设有一个3x3的数组,那么矩阵表示就是
作为数据提供者返回二维数组,为测试方法提供数据驱动测试。所以我得提一下
Object[][]
大小合适。我在json文件中有两组数据,我正在反序列化一个java对象,在我的例子中它是databean。所以这里我不得不提到尺寸Object[dataBean.size()][1]
完整代码: