2013-01-14 12 views
8

Używam MSTest (VS2008) i muszę utrzymywać zmienną między testami. Jednak zmienna zostaje ponownie zainicjowana między każdym testem.Jak utrzymuję zmienne między testami w MSTest?

Zgodnie z trzecim miejscu wymienionym w this answer,

MSTest zawsze tworzy nową instancję przykład klasy dla każdego badanego metodą badania są wykonywane.

Czy istnieje prosty sposób na zachowanie wartości zmiennej między testami lub w jakiś sposób zahamowanie tego zachowania?

+2

dlaczego chcesz to zrobić ?? –

+0

Czy możesz opublikować swój kod? Gdzie zadeklarowana jest twoja zmienna? – Schaliasos

+0

@StefanSteinegger Używam testów zintegrowanych, które dotyczą interfejsu REST API innej firmy - tworzenie elementu, pobieranie właściwości generowanej po stronie serwera, a następnie używanie go do innego połączenia. Wydaje się, że nierozsądnie jest odgadnąć całą sprawę, biorąc pod uwagę, że mają w pełni funkcjonalną piaskownicę. Jestem pewien, że istnieje wiele innych uzasadnionych powodów, aby chcieć to zrobić. – Andrey

Odpowiedz

9

Użyj statycznej zmiennej użytkownika:

static int _test = 0; 

[TestMethod] 
public void __Test1() 
{ 
    _test += 1; 
    Assert.IsTrue(_test == 1); 
} 

[TestMethod] 
public void __Test2() 
{ 
    _test += 1; 
    Assert.IsTrue(_test == 2); 
} 
+0

Działa doskonale, dziękuję. – Andrey

+4

Technicznie poprawne, ale zapewnienie _test == 2 jest bardzo złym przykładem. a) Nie działa, gdy działa sam b) nie ma gwarancji, że testy są wykonywane w określonej kolejności c) powinieneś używać Assert.AreEqual podczas porównywania wartości. –

+1

@StefanSteinegger - z pewnością ważne punkty. Należy zdecydowanie skupić się na wykorzystaniu zmiennej statycznej jako sposobu osiągnięcia tego, o co prosi OP. –

Powiązane problemy