TestNG 使用DataProvider传递参数的时候,报错:
java.lang.IllegalArgumentException: argument type mismatch
发生这个错误的原因是,DataProvider的方法返回的二维数组中的一维数组的元素类型和使用了这个DataProvider的Method的参数列表中对应的参数的类型不相符。
记住一点:
TestNG的@DataProvider注解的方法返回的一维数组内的元素个数,元素类型必须和使用了这个DataProvider的方法的参数列表中参数个数,参数类型保持一致。
我们结合下面的代码来理解这段话,你就明白为何错了。
package com.testng;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class TestDataProvider {
@DataProvider(name = "myDataProvider")
public Object[][] myDataProvider(){
/*返回一个二维数组*/
return new Object[][]{
/*这个二维数组下的一维数组的元素类型依次是 String, Integer*/
{ "StringElement", new Integer(20)},
};
}
/*使用了DataProvider的Method的参数列表参数类型依次是 String String,和DataProvider的一维数组的元素类型不相符,所以报错*/
@Test(dataProvider = "myDataProvider")
public void testDataProvider(String student, String major){
System.out.println(""+student);
System.out.println(""+major);
}
}