我正在用硒编写以下代码,并且显示以下错误,请让我知道问题出在哪里。
导入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;
错误:
失败:testData
org.testng.internal.reflect.MethodMatcherException:数据提供者不匹配方法:testData([Parameter
{index = 0,type = java.lang.String,clarifiedAnnotations = []},Parameter
{index = 1,type = java .lang.String,clarifiedAnnotations = []},参数{index =
2,type = java.lang.Integer,clarifiedAnnotations =
[]}])参数:[(java.lang.String)anjali,(java.lang.String
)pa,(java.lang.String)25.0],位于org.org的org.testng.internal.Invoker.injectParameters(Invoker.java:1293),位于org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:49)
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)位于org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)处的.testng.internal.Invoker.invokeTestMethods(Invoker.java:1187)
org.testng。org.testng.SuiteRunner.runTest(SuiteRunner.java:380)的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.TestNG.runSuitesLocally(TestNG.java:1226)的org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)的org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)处。
org.testng.TestNG.run(TestNG.java:1115)的org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)的TestNG.runSuites(TestNG.java:1144)org.testng.remote.RemoteTestNG
.initAndRun(RemoteTestNG.java:230)在org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
我看到的唯一问题是,您是从excel中读取的,因此可能所有值都已输入String
,除非您将其转换为Integer
。但是,在测试中,您希望第三个参数age
是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);
}
错误: 失败:testData org.testng.internal.reflect.MethodMatcherException:数据提供程序不匹配方法:testData([参数{index=0,Type=java.lang.String,DeclaredAnnotations=[]},参数{index=1,Type=java.lang.String,DeclaredAnnotations=[
我有一个测试班和测试方法。这取决于数据提供程序方法。数据提供程序方法位于不同的类中,而不是测试类或其基类之一。根据TestNG文件 如果要将数据提供程序放在不同的类中,则它需要是静态方法或具有非参数构造函数的类,并且指定可以在dataProviderClass属性中找到它的类 测试类: 数据提供程序类: Eclipse的测试输出: 它似乎不起作用。我正在使用TestNG 6.9.11并尝试从mav
在 Pagination 和 Sorting 部分, 我们已经介绍了如何允许终端用户选择一个特定的数据页面,根据一些字段对它们进行展现与排序。 因为分页和排序数据的任务是很常见的,所以Yii提供了一组封装好的data provider类。 数据提供者是一个实现了 yii\data\DataProviderInterface 接口的类。 它主要用于获取分页和数据排序。它经常用在 data widge
我在运行测试脚本后收到一个错误。我已经在其他测试脚本中运行了相同的方法,但我使用的这个脚本几乎与其他测试脚本相同。你能帮助我为什么会出现这个错误吗? 这是获取excel数据的方法。 这是我的数据提供程序方法
我已使用以下方法在应用程序中输入凭据。 其中EnterText定义如下: 在测试类中,我写了下面的代码 我得到以下错误: 失败:loginProxy(“11”,“Priya”)java.lang.NumberFormatException:java.lang.Integer处为空。parseInt(未知源)位于java.lang.Integer。parseInt(未知源) 请帮助解决同样的问题。据
我有一个包含2列测试数据的xls文件。对于每一列,我都希望有一个测试方法。 现在我知道了如何使用dataprovider读取xls文件并将测试数据提供给一个测试方法。但如何使用同一个dataprovider进行多个测试呢? 我有下面的代码,一旦我运行这个代码得到错误,我的代码是: =========================================================默认