2017-02-13 27 views
5

Używam NUnit do uruchomienia testów Selenium i mam drobny problem Chcę sprawdzić, czy mogę poprawić. To, co się dzieje, polega na tym, że [OneTimeSetUp] i [OneTimeTearDown] działa po zakończeniu każdego urządzenia. To, czego chcę, to uruchamianie [OneTimeSetUp] raz, gdy testy są uruchomione, i rozłączenie do uruchomienia po zakończeniu wszystkich urządzeń.Czy możliwe jest ustawienie [OneTimeSetup] dla WSZYSTKICH testów?

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 
} 

Odpowiedz

8

OneTimeSetUpAt hołd ma dwa zastosowania.

W pierwszym, oznacza metodę w urządzeniu testowym, które jest uruchamiane raz przed innymi testami w tej fixtrue. Tak właśnie go używasz, dziedzicząc po klasie bazowej. OneTimeSetUp pojawia się, dzięki dziedziczeniu, w każdym każdym twoich urządzeń pochodnych, ale nadal jest uruchamiany wiele razy, raz dla każdego urządzenia.

Drugie zastosowanie to SetUpFixture. Jeśli utworzysz SetUpFixture w konkretnej przestrzeni nazw, to metoda OneTimeSetUp uruchomi się raz po, przed innymi testami w tej przestrzeni nazw. Jeśli utworzysz SetUpFixture poza jakimkolwiek obszarem nazw, jego OneTimeSetUp będzie działać raz przed jakimkolwiek testowaniem w zespole.

Aby uzyskać więcej informacji o programie SetUpFixture, zobacz docs.