Getting an error of Data provider mismatch

35 Views Asked by At

Getting an error:

FAILED: com.testingvasitum.testcases.LoginpageTests.login
org.testng.internal.reflect.MethodMatcherException: 
[public void com.testingvasitum.testcases.LoginpageTests.login(java.lang.String,java.lang.String) throws java.lang.InterruptedException] has no parameters defined but was found to be using a data provider (either explicitly specified or inherited from class level annotation).
Data provider mismatch

I try to get the data from excel sheet by using dataProvider to login with multiple credentials by writing the script mentioned below:

public final class LoginpageTests extends BaseTest {

    @Test(dataProvider="loginData")
    public void login(String email, String pass, String scenario) throws InterruptedException {

        //Uninterruptibles.sleepUninterruptibly(3, TimeUnit.SECONDS);

        //WebDriverWait wait = new WebDriverWait(DriverManager.getDriver(), Duration.ofSeconds(30));
        new VasitumLoginPage()
        .enterEmail(email)
        .enterPass(pass)
        .clickOnLoginButton();
        
        String actualDashboardTitle = DriverManager.getDriver().getCurrentUrl();
        String expectedDashboardTitle = FrameworkConstants.getRecruiterDashboardTitle();
        
        Assert.assertSame(actualDashboardTitle, expectedDashboardTitle, scenario);
    }
    
    @DataProvider(name = "loginData")
    public Object[][] getData() throws IOException, InterruptedException     {
        FileInputStream fs = new FileInputStream("C:\\Users\\maven\\Desktop\\TestData.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(fs);

        XSSFSheet sheet = workbook.getSheet("Login");

        int row = sheet.getLastRowNum() + 1;
        System.out.println("Row: "+ row);
        int column = sheet.getRow(0).getLastCellNum();
        System.out.println("Column: "+ column);
        Object[][] data = new Object[row-1][column];


        for(int r=0; r<row-1; r++) {
            for(int c=0; c<column; c++) {
                data[r][c] = sheet.getRow(r+1).getCell(c).getStringCellValue();
                //System.out.println("Value of row and column "+ r + c + ": "+ data[r][c]);
            }   
        }   

        return data;
    }

}
0

There are 0 best solutions below