Java org.testng.internal.reflect.MethodMatcherException:数据提供程序不匹配

Java org.testng.internal.reflect.MethodMatcherException:数据提供程序不匹配,java,selenium-webdriver,testng,Java,Selenium Webdriver,Testng,我有一个包含两列测试数据的xls文件。对于每一列,我想有一个测试方法 现在我知道了如何使用dataprovider读取xls文件并将测试数据提供给测试方法。但是,如何在多个测试中使用相同的数据提供程序 我有下面的代码,一旦我运行这个代码就会出错 我的代码是: @Test(dataProvider="TestData") public void test1(String Username ) throws InterruptedException { driver.findE

我有一个包含两列测试数据的xls文件。对于每一列,我想有一个测试方法

现在我知道了如何使用dataprovider读取xls文件并将测试数据提供给测试方法。但是,如何在多个测试中使用相同的数据提供程序

我有下面的代码,一旦我运行这个代码就会出错 我的代码是:

@Test(dataProvider="TestData")
public void test1(String Username ) throws InterruptedException
{           
driver.findElement(By.xpath("//*[@id=\"UserName\"]")).sendKeys(Username);               
}

@Test(dataProvider="TestData")
public void test2(String Password)
{   
driver.findElement(By.xpath("//*[@id=\"Password\"]")).sendKeys(Password);
driver.findElement(By.xpath("//[@id=\"columns\"]/div/div[1]/form/div[1]/div[2]/div[4]/input")).click();
}




@DataProvider (name="TestData")
public  Object [][] readexcel(Method method) throws BiffException, IOException 
        {

File f=new File("E:\\Selenium\\Eclips\\NCPDP\\src\\TestData\\TestData.xls");
            Workbook w = Workbook.getWorkbook(f);
            Sheet s = w.getSheet("TestData");
            int rows = s.getRows();
            int columns =s.getColumns();

            String inputData[][]=new String[rows-1][columns];
            try {
                for(int i=1;i<rows;i++)
                    {
                    for(int j=0;j<columns;j++)
                        {
            Cell c=s.getCell(j,i);
            inputData[i-1][j]=c.getContents();

                        }

                    }

        }
        catch(Exception e){
            e.getMessage();
        }

        return inputData;
        }  
@Test(dataProvider=“TestData”)
public void test1(字符串用户名)引发InterruptedException
{           
driver.findelelement(By.xpath(“/*[@id=\“UserName\”])).sendKeys(UserName);
}
@测试(dataProvider=“TestData”)
public void test2(字符串密码)
{   
findElement(By.xpath(“//*[@id=\“Password\”])).sendKeys(Password);
driver.findelelement(By.xpath(“/[@id=\”columns\”)/div/div[1]/form/div[1]/div[2]/div[4]/input”)。单击();
}
@数据提供者(name=“TestData”)
公共对象[][]readexcel(方法方法)引发BiffeException,IOException
{
文件f=新文件(“E:\\Selenium\\Eclips\\NCPDP\\src\\TestData\\TestData.xls”);
工作簿w=Workbook.getWorkbook(f);
表s=w.getSheet(“测试数据”);
int rows=s.getRows();
int columns=s.getColumns();
字符串inputData[][]=新字符串[行1][列];
试一试{

对于(int i=1;i如果
数据提供程序返回两个参数,则需要将这两个参数传递给
@Test
注释

您的解决方案

@Test(dataProvider="TestData")
public void test1(String Username,String Password) throws Exception
{           
driver.findElement(By.xpath("//*[@id=\"UserName\"]")).sendKeys(Username);          
driver.findElement(By.xpath("//*[@id=\"Password\"]")).sendKeys(Password);
driver.findElement(By.xpath("//[@id=\"columns\"]/div/div[1]/form/div[1]/div[2]/div[4]/input")).click();
}

请与参数detailsHello Ishita分享完整的异常,感谢您的回复,请检查我是否用完整的异常细节编辑了帖子。您是对的,但我担心的是我想对xls文件中的每一列使用单独的测试注释。我们是否可以对单个数据提供程序使用多个测试注释。如果是,那么我们如何n在我的代码中实现?@satishtrimukhe您可能在使用数据提供程序作用域、Excel Reader等方面走错了方向。您想做的不是正确的方法,