2016-04-04 9 views
0

エラーがある場合、testngのメソッドのテスト結果を失敗に設定します。私はこのコード行は、私はエラーを引き起こす場合testngでtestfailureを設定すると正の戻り値が返されます

Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE); 

は、しかし、私はまだ障害が上記の実行では、私の総テスト実行

=============================================== 
LoginTesten 
Total tests run: 4, Failures: 0, Skips: 0 
=============================================== 

から返さなかっしまいますトリックを行う必要があることを発見があるはずです2つの失敗はありますが、何もありません。テスト結果を設定するルールは、テストが実行される場所とは異なるクラスにあります。それは私が私のチェックページのコードを置くクラスに設定されているので、私は大胆なテストを持っていません。

それが設定されているコードは

public void checkTextOnPage(String text, boolean expected,String errorMessage, ArrayList<WebDriver> browsers, Logger Logger, String map) throws IOException { 
     for(WebDriver driver: browsers){ 
      try { 
       Assert.assertEquals(driver.getPageSource().contains(text), expected, errorMessage); 
      }catch (AssertionError e){} 
      Capabilities dataBrowser = ((RemoteWebDriver)driver).getCapabilities(); 
      if(driver.getPageSource().contains(text) == expected){ 
       Logger.info("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => PRESENT"); 
      }else if (driver.getPageSource().contains(text) != expected){ 
       Logger.warning("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => NOT PRESENT"); 
       File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
       FileUtils.copyFile(screenshot, new File(map + "text_" + text + "_NotPresent_" + this.screenshotCount + "_" + dataBrowser.getBrowserName() + ".png")); 
       this.screenshotCount++; 
       Reporter.getCurrentTestResult().setStatus(ITestResult.FAILURE); 
      } 
     } 
    } 

これは私がそのコードから取得した出力ファイル名を指定して実行

public void loginIMWWelcomeNOT() throws InterruptedException, IOException { 
    this.getLogin().goToPage(this.getDriverList(), TestConstants.Test_URL); 
    this.getBrowserMovement().typeTextElementXpath(".//*[@name='username']", this.getDriverList(), "intix1"); 
    this.getBrowserMovement().typeTextElementXpath(".//*[@name='password']", this.getDriverList(), "Jasmine11"); 
    this.getBrowserMovement().clickElementXpath(".//*[@name='logon']", this.getDriverList()); 
    this.getCheckPage().checkTextOnPage("grazjfnzeofnez", true, "We komen niet terecht op de welkom pagina", this.getDriverList(), this.getLOGGER(), this.getScreenshotMap()); 
    System.out.println(Reporter.getCurrentTestResult()); 
} 

されている私のテストだから、ある

apr 04, 2016 4:50:37 PM Data.CheckPage checkTextOnPage 
WARNING: [2016-04-04 165030] Browser:chrome -- Version:49.0.2623.110 -- Text : grazjfnzeofnez => NOT PRESENT 
[TestResult name="" status=FAILURE method=LoginTesten.loginIMWWelcomeNOT()[pri:0, instance:[email protected]] output={null}] 

されています設定されていますが、何にも拾われません。私はそれを他の授業や他の何かに設定したのですか?

答えて

0

@stevedcエラーをキャッチし、テストの最後にエラーメッセージとしてAssertエラーを出力します。何かのように

public void checkTextOnPage(String text, boolean expected,String errorMessage, ArrayList<WebDriver> browsers, Logger Logger, String map) throws IOException { 
    for(WebDriver driver: browsers){ 
     try { 
      Assert.assertEquals(driver.getPageSource().contains(text), expected, errorMessage); 
     }catch (AssertionError e){} 
     Capabilities dataBrowser = ((RemoteWebDriver)driver).getCapabilities(); 
     if(driver.getPageSource().contains(text) == expected){ 
      Logger.info("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => PRESENT"); 
     }else if (driver.getPageSource().contains(text) != expected){ 
      Logger.warning("[" + this.dateFormat.format(this.date) + "]" +" Browser:" + dataBrowser.getBrowserName() + " -- Version:" + dataBrowser.getVersion() + " -- Text : " + text + " => NOT PRESENT"); 
      File screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
      FileUtils.copyFile(screenshot, new File(map + "text_" + text + "_NotPresent_" + this.screenshotCount + "_" + dataBrowser.getBrowserName() + ".png")); 
      this.screenshotCount++; 
      Assert.assertEquals(true, false, e); 
     } 
    } 
} 
0

あなたのテストでは、レポートと直接対話しないでください。 JUnitでエラーを表示するには、例外またはasset in your testsをスローします。

+0

私はアサートにカウントすれば、それはちょうどロギングなしでテストを中止します。私はそれをキャッチしてロギングを追加することができますが、テストが完全に失敗するのと同じ結果であり、最後まで実行したいです – stevedc

+0

ビルドシステムの信頼性、例えばhttp://stackoverflow.com/questions/4174696/ make-maven-run-all-tests-even-when-some-failを実行します。 –

関連する問題