2016-03-20 2 views
0

Ich habe den folgenden Testfall mit TestNG geschrieben, überspringe aber den MakemyTrip Testfall. Ich habe keine Ahnung warum. Es gibt keine Abhängigkeiten und die Testdaten werden auf dem richtigen Weg gehalten.TestNG überspringt die Methode "MakemytripHome", obwohl keine Abhängigkeiten bestehen. Warum wird es nicht ausgeführt?

Warum TestNG es nicht ausführt?

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; 
    } 
} 

Antwort

0

Ich erwarte dies, weil Sie das Datenobjekt nicht initialisiert werden. Das ist der Grund, dass Daten null sind. Verwenden Sie unten ein, bevor sie für Schleife

data=new Object[rowcount][colcount]; 

Bitte entfernen Sie dieses @SuppressWarnings („Null“), wird es Daten als null ohne obigen Code zeigen. anstatt zu unterdrücken, gut, um es herauszufinden, das Problem.

Danke, Murali

+0

laufen bekommen Wenn das so wäre, Sie NPE bekommen würde (ich), nicht ignoriert Test . Das passiert nur, wenn der Datensatz leer ist. –

0

Sie versuchen Null aus dem Dataprovider zurückzukehren, wie Daten [] [], um irgendetwas nicht initialisiert wird. Sie müssen Code unten verwenden:

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; 

Beachten Sie die Linie data=new Object[rowcount][colcount]; Dies sollten Sie, dass Prüfungen

Verwandte Themen