Java 如何使用dataprovider获取字符数组

Java 如何使用dataprovider获取字符数组,java,testng,dataprovider,Java,Testng,Dataprovider,我有一个以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数组作为输入的类,如何使用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数组时,它会将字符视为单个字符。因此,“尝试传递3个参数,但方法需要1”的错误

请帮忙。
谢谢。

从问题的详细信息推断,使用数据提供程序处理一组数据类型。您可以在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);
}

注意:她,假设您对
MyArray

有一个正确的工作定义,也许您可以尝试这样做

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'}
        };
    }
}
此when run生成以下输出(确认测试方法确实正在接收字符数组)


如果您包含一些相关的代码,例如
MyArray
,这会有所帮助。您是否尝试过编写数据提供程序?请分享代码,还有你所说的错误是什么意思,请澄清。这真的很有帮助!第二个解决方案就是我想要的。但是编译器会抱怨数据类型。我做了一些修改,但仍然得到“java.lang.IllegalArgumentException:参数类型不匹配”。公共类MyArray(){public void doSomething(char[]datalist){}@Test(dataProvider=“testData”,dataProviderClass=.class)公共void testSomething(List charData){MyArray MyArray=new MyArray();for(char[]dataTypes:charData){MyArray.doSomething(dataTypes);}如果在修改某些内容后可能遇到错误,则可能需要更新该问题或提出另一个问题。
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
===============================================