2017-09-01 33 views
0

我正在下面的代碼中寫入以下代碼並顯示錯誤,請讓我知道問題出在哪裏。Selenium中的數據提供程序與TestNG不匹配

import org.testng.annotations.DataProvider; import 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; 

錯誤:

FAILED: testData org.testng.internal.reflect.MethodMatcherException: Data provider mismatch Method: testData([Parameter{index=0, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=1, type=java.lang.String, declaredAnnotations=[]}, Parameter{index=2, type=java.lang.Integer, declaredAnnotations=[]}]) Arguments: [(java.lang.String)anjali,(java.lang.String)pa,(java.lang.String)25.0] at org.testng.internal.reflect.DataProviderMethodMatcher.getConformingArguments(DataProviderMethodMatcher.java:49) at org.testng.internal.Invoker.injectParameters(Invoker.java:1293) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1187) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109) at org.testng.TestRunner.privateRun(TestRunner.java:744) at org.testng.TestRunner.run(TestRunner.java:602) at org.testng.SuiteRunner.runTest(SuiteRunner.java:380) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at org.testng.SuiteRunner.run(SuiteRunner.java:289) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) at org.testng.TestNG.runSuitesLocally(TestNG.java:1226) at org.testng.TestNG.runSuites(TestNG.java:1144) at org.testng.TestNG.run(TestNG.java:1115) at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)

回答

1

我看到的是這個,你是從Excel閱讀等都可能是所有的值都在String來了,除非你正在轉換,爲Integer唯一的問題。然而,在您的測試,你想到第三個參數ageInteger

更改類型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); 

} 
+0

你的建議解決了我的問題,代碼現在正在工作,謝謝Gaurang :-) – Anie

+0

你應該接受答案:) –

相關問題