2009-09-15 16 views
50

Szybkie pytanie, jak utworzyć metodę uruchamianą tylko raz, zanim wszystkie testy w rozwiązaniu zostaną uruchomione.Globalna metoda inicjalizacji testu dla MSTest

+0

Chciałbym wiedzieć, także :(Obecnie mam abstrakcyjną klasę bazową, z której każda dziedziczy testClass. Wewnątrz tej klasy mam metodę TestInitialize. Problem polega na tym, że ta metoda jest uruchamiana za każdym razem, gdy uruchamiany jest nowy test ! –

+0

Niech ta abstrakcyjna klasa bazowa zaimplementuje konstruktor statyczny, który zostanie uruchomiony tylko raz, zanim którykolwiek z testów zostanie uruchomiony – mglmnc

Odpowiedz

88

Utwórz publiczną metodę statyczną, ozdobioną atrybutem AssemblyInitialize. Ramy test nazwać konfiguracji metoda raz testu:

[AssemblyInitialize()] 
public static void MyTestInitialize(TestContext testContext) 
{} 

Dla przerywaniem ITS:

[AssemblyCleanup] 
public static void TearDown() 
{} 

EDIT:

Kolejny bardzo ważny szczegół: klasa do której należy ta metoda musi być ozdobiona [TestClass]. W przeciwnym razie metoda inicjalizacji nie zostanie uruchomiona.

+3

Jeśli masz testy w więcej niż jednym zestawie, to MyTestInitialize zostanie wywołany więcej niż jeden raz podczas testu . – BenCr