2016-03-20 1 views
0

Я написал следующий тестовый тест с использованием TestNG, но он пропускает тестовый файл MakemyTrip. Я не знаю, почему. Нет зависимостей, и тестовые данные хранятся на правильном пути.TestNG пропускает метод «MakemytripHome», хотя никаких зависимостей нет. Почему это не выполняется?

Почему TestNG не выполняет его?

public class Secattempt { 
    static FileInputStream fis; 
    static XSSFWorkbook workbook; 
    static XSSFSheet sheet; 
    static XSSFRow row; 
    static XSSFCell cell; 

    @Test(dataProvider = "getData") 
    public void MakemytripHome(String departCity, String destCity, String browser) throws AWTException { 
     Robot robo = new Robot(); 
     WebDriver driver; 

     if (browser.equals("firefox")) { 
      driver = new FirefoxDriver(); 
     } else { 
      System.setProperty("webdriver.chrome.driver", "D:\\selenium\\chromedriver_win32\\chromedriver.exe"); 
      driver = new ChromeDriver(); 
     } 

     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
     driver.get("http://www.makemytrip.com/"); 

     WebElement Depart = driver.findElement(By.id("from_typeahead1")); 
     WebElement Dest = driver.findElement(By.id("to_typeahead1")); 
     Depart.clear(); 
     Depart.sendKeys(departCity); 
     robo.keyPress(KeyEvent.VK_ENTER); 
     Dest.sendKeys(destCity); 
     robo.keyPress(KeyEvent.VK_ENTER); 
     driver.findElement(By.id("flights_submit")).click(); 
    } 

    @SuppressWarnings("null") 
    @DataProvider 
    public Object[][] getData() throws IOException { 
     Object data[][] = null; 
     fis = new FileInputStream("D:\\selenium\\data.xlsx"); 
     workbook = new XSSFWorkbook(fis); 
     sheet = workbook.getSheetAt(0); 
     row = sheet.getRow(1); 

     int rowcount = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1; 
     int colcount = row.getLastCellNum(); 

     for (int rnum = 2; rnum <= rowcount; rnum++) { 
      row = sheet.getRow(rnum); 
      for (int cnum = 0; cnum < colcount; cnum++) { 
       cell = row.getCell(cnum); 
       data[rnum - 2][cnum] = cell.getStringCellValue(); 
      } 
     } 

     return data; 
    } 
} 

ответ

0

Я ожидаю, что это связано с тем, что вы не инициализировали объект данных. это причина, по которой данные являются нулевыми. Используйте ниже один, прежде чем цикл

data=new Object[rowcount][colcount]; 

Пожалуйста, удалите эту @SuppressWarnings («нуль»), он будет показывать данные, как нуль, не выше кода. а не подавлять, хорошо понять эту проблему.

Спасибо, Murali

+0

Если бы это было так, вы бы получить NPE (я), не игнорировали тест , Это происходит только в том случае, если набор данных пуст. –

0

Вы пытаетесь вернуть Null из DataProvider, как данные [] [] не инициализирован ни к чему. Вы должны использовать код ниже:

Object data[][] = null; 
     fis = new FileInputStream("D:\\selenium\\data.xlsx"); 
     workbook = new XSSFWorkbook(fis); 
     sheet = workbook.getSheetAt(0); 
     row = sheet.getRow(1); 

     int rowcount = sheet.getLastRowNum() - sheet.getFirstRowNum() + 1; 
     int colcount = row.getLastCellNum(); 
     data=new Object[rowcount][colcount]; 
     for (int rnum = 2; rnum <= rowcount; rnum++) { 
      row = sheet.getRow(rnum); 
      for (int cnum = 0; cnum < colcount; cnum++) { 
       cell = row.getCell(cnum); 
       data[rnum - 2][cnum] = cell.getStringCellValue(); 
      } 
     } 

     return data; 

Обратите внимание на линию data=new Object[rowcount][colcount]; Это должно заставить вас бежать, что тесты

Смежные вопросы