2016-03-20 7 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

これは、データオブジェクトが初期化されていないためです。データがnullの理由です。

data=new Object[rowcount][colcount]; 

(「ヌル」)をこの@SuppressWarningsを削除してくださいforループの前に1未満に使用し、それは上記のコードなしでヌルなどのデータが表示されます。抑圧するのではなく、問題を把握することをお勧めします。

あなたは、データが[] []何に初期化されていないとして、データプロバイダからのNullを返すようにしようとしている、 ムラリ

+0

をテスト。これは、データセットが空の場合にのみ発生します。 –

0

をありがとうございました。あなたは、コードの下に使用する必要があります。

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]; を守っこれは、あなたがそれを実行するために取得する必要はそれがそうだったら、あなたはNPE(私は)、ない無視のテストを取得したい

関連する問題