2016-06-26 73 views
2

我想從開始運行測試n次,即退出驅動程序並再次運行設置。但重試屬性不會退出驅動程序,它只是再次運行測試用例。Nunit 3次重試n次

[TestFixture(typeof(ChromeDriver))] 
public class TestWithMultipleBrowsers<TWebDriver> where TWebDriver : IWebDriver, new() 
{ 
    #region Setup 
    private IWebDriver driver; 

    [TestFixtureSetUp] 
    public void CreateDriver() 
    { 
     if (typeof(TWebDriver).Name == "ChromeDriver") 
     { 
      driver = new ChromeDriver(@"C:\ChromeDriver"); 
     } 
     else 
     { 
      driver = new TWebDriver(); 
     } 
    } 
    [TestFixtureTearDown] 
    public void FixtureTearDown() 
    { 
     if (driver != null) driver.Quit(); 
    } 
    [Test,Retry(2)] 
    [TestCase("jobsearch")] 
    [TestCase("employer")] 
    public void GoogleTest(string search) 
    { 
     driver.Navigate().GoToUrl("http://www.google.com/"); 
     IWebElement query = driver.FindElement(By.Name("q")); 
     query.SendKeys(search + Keys.Enter); 
     Thread.Sleep(1000); 
     Assert.AreEqual(search + " - Google Search", driver.Title); 
    } 
    #endregion 
} 
+0

從命令行運行測試是一個選項嗎? – dotctor

回答

3

我想從開始即執行測試n次退出驅動程序,然後重新運行安裝程序。

的原因CreateDriver方法不被再次叫是因爲你使用的[TestFixtureSetUp]屬性只運行一次的[TestFixture]。如果您想在每次測試之前運行設置方法,請改用[Setup]屬性。

[TestFixtureTearDown]屬性也一樣。如果這應該在每次測試之後發生,則應該使用[TearDown]屬性。

+0

設置工作,謝謝,即使測試通過第一次,重試屬性運行測試,我的目標是僅當測試失敗時才重試測試 –

+1

@delwasafewrew只有在測試失敗時纔會發生重試。你可以看看實現。 https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Attributes/RetryAttribute.cs#L103。也許你的情況還有另外一個原因。 – Kote

+0

根據文檔,它應該只在測試失敗時再試一次,但即使測試通過,上面的代碼似乎也會運行。我正在使用Nunit版本3 –