我正在用 selenium 编写以下代码,并显示以下错误,请让我知道问题出在哪里。
导入 org.testng.annotations.DataProvider;
导入 org.testng.annotations.Test;
public class testngexcel {
public static ExcelReader excel = null;
@Test(dataProvider = "newdata")
public void testData(String username, String password, Integer age) {
System.out.println(username + " - " + password + " - " + age);
}
@DataProvider(name = "newdata")
public static Object[][] getData() {
if (excel == null) {
excel = new ExcelReader("C:\\Users\\Anjali.Nautiyal\\Desktop\\selenium\\testngdata.xlsx");
}
String sheetName = "login";
int rows = excel.getRowCount(sheetName);
int cols = excel.getColumnCount(sheetName);
Object[][] data = new Object[rows - 1][cols];
for (int rowNum = 2; rowNum <= rows; rowNum++) {
for (int colNum = 0; colNum < cols; colNum++) {
data[rowNum - 2][colNum] = excel.getCellData(sheetName, colNum, rowNum);
}
}
return data;
Error:
失败:testData org.testng.internal.reflect.MethodMatcherException:
数据提供者不匹配方法:testData([Parameter{index=0,
类型=java.lang.String,declaredAnnotations=[]},参数{index=1,
类型=java.lang.String,declaredAnnotations=[]},参数{index=2,
type=java.lang.Integer, declaredAnnotations=[]}]) 参数:
[(java.lang.String)anjali,(java.lang.String)pa,(java.lang.String)25.0]
在
org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:49)
在 org.testng.internal.Invoker.injectParameters(Invoker.java:1293)
在 org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1187)
在
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
在
org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
在 org.testng.TestRunner.privateRun(TestRunner.java:744) 处
org.testng.TestRunner.run(TestRunner.java:602) 在
org.testng.SuiteRunner.runTest(SuiteRunner.java:380) 在
org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) 在
org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) 在
org.testng.SuiteRunner.run(SuiteRunner.java:289) 在
org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在
org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在
org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 在
org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 在
org.testng.TestNG.runSuites(TestNG.java:1144) 在
org.testng.TestNG.run(TestNG.java:1115) 在
org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
我看到的唯一问题是,您正在从 Excel 中读取内容,因此可能所有值都会进来String
,除非您将其转换为Integer
。但是,在您的测试中您期望第三个参数age
to be Integer
将类型更改为String
应该可以解决问题
@Test(dataProvider = "newdata")
public void testData(String username, String password, String age) {
System.out.println(username + " - " + password + " - " + age);
}
以下代码会引发相同的错误。
@DataProvider(name = "newdata")
public static Object[][] getData() {
return new Object[][]{
{"20"},
{"30"}
};
}
@Test(dataProvider = "newdata")
public void testData(Integer age) {
System.out.println(age);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)