我有一个以char数组作为输入的类,如何使用dataprovider提供数据?
@Test
public void testSomething(){
char[] list = {'a', 'b', 'c'};
MyArray myArray = new MyArray();
myArray.doSomething(list);
}
我想要像这样的数据驱动程序:
{
{'a', 'b', 'c'},
{'a', 'b', 'c', 'd'};
}
问题是,在使用2D数组时,它会将char视为单独的char。因此,"尝试传递3个参数的错误,但方法需要1"。
请帮忙。 谢谢。
答案 0 :(得分:2)
从问题细节中推断,将数据提供者用于一组数据类型。您可以在DataProvider类中指定测试数据:
@DataProvider(name = "testData")
public static Object[][] testData() {
char[] data1 = {'a', 'b', 'c'};
char[] data2 = {'a', 'b', 'c', 'd'};
return new Object[][]{{data1, data2}};
}
并在测试类中使用相同的内容:
@Test(dataProvider = "testData", dataProviderClass = <ClassName>.class)
public void testSomething(char[] data1, char[] data2){
MyArray myArray = new MyArray();
myArray.doSomething(data1);
myArray.doSomething(data2);
}
或者你可以创建一个char[] data
的列表/数组,然后从你的数据提供者那里返回迭代(假设它为
@Test(dataProvider = "testData", dataProviderClass = <ClassName>.class)
public void testSomething(List<List<Character>> charData){
MyArray myArray = new MyArray();
for(List<Character> dataTypes : charData) {
myArray.doSomething(dataTypes);
}
注意 :她,假设您有正确的工作定义MyArray
答案 1 :(得分:1)
也许你可以尝试做这样的事情
public class DataProviderExample {
@Test (dataProvider = "dp")
public void testMethod(Character[] myArray) {
System.err.println("The input array ways : " + Arrays.toString(myArray));
}
@DataProvider (name = "dp")
public Object[][] getData() {
return new Object[][] {
{'t', 'e', 's', 't', 'n', 'g'},
{'j', 'a', 'v', 'a'}
};
}
}
运行时生成以下输出(确认测试方法确实接收到字符数组)
The input array ways : [t, e, s, t, n, g]
The input array ways : [j, a, v, a]
===============================================
Default Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================