2017-02-13 4 views
5

Ich benutze NUnit, um einige Selenium-Tests durchzuführen und ich habe ein kleines Problem, das ich sehen möchte, wenn ich korrigiert werden kann. Was passiert, ist, dass die [OneTimeSetUp] und [OneTimeTearDown] nach jedem Fixture ausgeführt wird. Ich möchte [OneTimeSetUp] einmal ausführen, wenn die Tests gestartet werden, und den Teardown ausführen, sobald ALLE Fixtures beendet sind.Ist es möglich, ein [OneTimeSetup] für ALLE Tests zu haben?

TestBaseClass.cs

public class TestBaseClass 
{ 

    [OneTimeSetUp] 
    public void Init() 
    { 
     // Login 
    } 

    [OneTimeTearDown] 
    public void TearDown() 
    { 
     Driver.Close(); 
    } 
} 

NavigationTests

[TestFixture] 
public class NavigationTests : TestBaseClass 
{ 
    // Tests 
} 

MainPageTests

[TestFixture] 
public class MainPageTests : TestBaseClass 
{ 
    // Tests 
} 

Antwort

8

OneTimeSetUpAt Tribut hat zwei Nutzungen.

In der ersten, markiert es eine Methode in einer Testvorrichtung, die einmal vor anderen Tests in diesem Fixtrue ausgeführt wird. So verwenden Sie es, indem Sie von einer Basisklasse erben. Das OneTimeSetUp erscheint dank der Vererbung in jedes Ihrer abgeleiteten Fixtures, aber es wird immer noch mehrfach ausgeführt, einmal für jedes Fixture. Die zweite Verwendung ist in einem SetUpFixture. Wenn Sie eine SetUpFixture in einem bestimmten Namespace erstellen, wird die OneTimeSetUp-Methode vor allen anderen Tests in diesem Namespace einmal ausgeführt. Wenn Sie die SetUpFixture außerhalb eines beliebigen Namespace erstellen, führt OneTimeSetUp vor allen Tests in der Assembly einmal aus.

Weitere Informationen zu SetUpFixture finden Sie unter docs.

Verwandte Themen