2016-06-26 11 views
2

Ich möchte den Test n-mal von Anfang an ausführen, d. H. Den Treiber beenden und das Setup erneut ausführen. Das Wiederholungsattribut beendet den Treiber jedoch nicht, sondern führt den Testfall erneut aus.Nunit 3 Wiederholungsversuch n mal

[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

Ist das Ausführen von Tests über die Befehlszeile eine Option? – dotctor

Antwort

3

Ich möchte den Test erneut n-mal von Anfang heißt beenden Sie den Treiber und starten Sie das Setup ausführen.

Der Grund für die CreateDriver Methode nicht wieder aufgerufen wird, da dadurch das [TestFixtureSetUp] Attribut verwenden, die für ein [TestFixture] nur einmal ausgeführt wird. Wenn Sie vor jedem Test eine Setup-Methode ausführen möchten, verwenden Sie stattdessen das Attribut [Setup].

Gleiches gilt für das Attribut [TestFixtureTearDown]. Sollte dies nach jedem Test geschehen, sollten Sie stattdessen das Attribut [TearDown] verwenden.

+0

Setup funktioniert, danke, Wiederholungsattribute führen Test, auch wenn der Test das erste Mal besteht, ist mein Ziel, den Test nur zu wiederholen, wenn es fehlschlägt –

+1

@delwasafewrew Retry passiert nur, wenn der Test fehlgeschlagen ist. Sie können sich die Implementierung ansehen. https://github.com/nunit/nunit/blob/master/src/NUnitFramework/framework/Attributes/RetryAttribute.cs#L103. Vielleicht gibt es einen anderen Grund für Ihren Fall. – Kote

+0

laut Dokumentation sollte es nur noch einmal versuchen, wenn der Test fehlschlägt, aber der obige Code scheint zu laufen, auch wenn der Test erfolgreich ist. Ich benutze Nunit Version 3 –