TestNG Wrong Number of Arguments With DataProviders

Viewed 1225
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="tests" configfailurepolicy="continue" thread-count = "10" verbose="1">
<parameter name="dev" value="true"></parameter>
    <test name ="Chrome" parallel="methods">
        <parameter name="myBrowser" value="chrome" /> 
            <classes>
                <class name="package.TestClass"></class>
                </classes>
            </test>

            <test name ="Firefox" parallel="methods">
        <parameter name="myBrowser" value="firefox" /> 
            <classes>
                <class name="package.TestClass"></class>
                </classes>
            </test>
</suite>

In this .xml file I have a parameter named "dev" set to true. I am trying to have my dataproviders read this variable and use a different excel sheet if true.

@Parameters("dev")
@DataProvider(parallel = true)
public Object[][] testData(String dev) {
    String path;
    if(dev.equals(true)){
        path =  System.getProperty("user.dir") + "\\src\\data\\dev-data.xlsx";
    }
    else{
        path =  System.getProperty("user.dir") + "\\src\\data\\reg-data.xlsx";
    }
    ExcelReader reader = new ExcelReader(path);
    Object[][] obj = new Object[reader.getSheetRows("url")][reader.getSheetColumns("url")]; //four test, one argument
    for(int i = 0; i < reader.getSheetRows("url"); i++){
        for(int j = 0; j < reader.getSheetColumns("url"); j++){
            obj[i][j] = reader.getCellData("url", j, i);
        }
    }

    return obj;
}

The issue is that the methods are saying that I am passing an incorrect number of arguments

@Test (dataProvider="testData")
public void test1(String url)
{}

java.lang.IllegalArgumentException: wrong number of arguments

2 Answers
Related