我正在使用@DataProvider
annotation for TestNG构建动态测试。在Java中,如何将定义为Queue<Deque<String>> queueOfDeques = ArrayDeque<Deque<String>>();
的数据结构转换为Object[][]
?基于this explanation,我尝试了这个:
@DataProvider( name = "providedQueue" )
public static Object[][] dataForTest(){
return new Object[][]{{SomeClass.GetQueueOfDeques}};
}
方法GetQueueOfDeques
返回上面定义的queueOfDeques
数据结构。我不知道我做错了什么,但它没有按原样转换变量,导致TestNG忽略参数化测试。
java.lang.ClassCastException:net.easysol.detectid.migrationtester.ArrayDeque无法强制转换为java.lang.String
答案 0 :(得分:2)
只需通过迭代来完成:
static Object[][] convert(Collection<? extends Collection<?>> cc) {
Object[][] res = new Object[cc.size()][];
int i = 0;
for (Collection<?> c : cc)
res[i++] = c.toArray();
return res;
}
这样您就可以获得任何类型的任何集合集合(可能是Queue
,Deque
,List
和许多其他集合)的一般方法(如<?>
指的那样)到Object[][]
数组。