2012-03-21 12 views
2

私は、specflowシナリオの一部として実行される一連のセレンテストを行っています。私は現在起動して機能ごとに一度ChromeDriverを停止しています:私は作成して、機能の実行ごとに一度ユニットテストセッションの実行ごとに一度chromedriverを終了するのではなくできればテストセッションごとにクロームドライバを1回起動して停止する

[Binding] 
public class WebBrowser 
{ 
    public static IWebDriver Current 
    { 
     get 
     { 
      if (!FeatureContext.Current.ContainsKey("browser")) 
      { 
       FeatureContext.Current["browser"] = new ChromeDriver(); 
      } 
      return (IWebDriver)FeatureContext.Current["browser"]; 
     } 
    } 

    [BeforeFeature] 
    public static void Close() 
    { 
     if (FeatureContext.Current.ContainsKey("browser")) 
     { 
      Current.Close(); 
      ((ChromeDriver) FeatureContext.Current["browser"]).Quit(); 
     } 
    } 
} 

テストがはるかに高速に実行します。

各実行の最後にいくつかのコードを実行するようにnunitを設定する方法はありますか?

私はその後、chromedriver.Quit()呼び出し削除する場合:

  • をReSharperのテストランナーは、完全なテストの実行を報告したことがない私のテストを実行した後にいつまでも回り続けます。
  • NUnitテストランナーは正常に動作しますが、テストセッションが実行されるたびに実行中のドライバーウィンドウが残ります。

最初のテストが実行される前にクロムドライバを作成し、最後のテストを実行した後にコードを停止させるとよいでしょう。

更新:[BeforeScenario]から[BeforeFeature]に変更 - これを指摘してくれたLeeに感謝します。

答えて

3

各シナリオの後にドライバを終了します。 [AfterScenario]を[AfterFeature]に変更すると、パフォーマンスが向上します。 [BeforeFeature]を使ってWebドライバを設定することができます。

+0

ありがとうございました。元の質問はまだ残っていますが、これを修正することでスピードが飛躍的に向上しました。 – Brownie

+0

これは正解です。この回答が指摘するように、あなたは[AfterFeature]で辞めるべきです。 –

関連する問題