2012-08-26 20 views
29

Jestem ciekawy, dlaczego konfiguracja urządzenia musi być statyczna? Bardziej intuicyjne wydaje mi się posiadanie zmiennych instancji na urządzenie, które współużytkuje czas życia urządzenia.Dlaczego metoda ClassInitialize musi być statyczna?

Tak, można je zainicjować w konstruktorze, ale zakładam, że są poza zasięgiem kontroli biegacza testowego.

Jakie wymagania konstrukcyjne lub filozofie określały, czy metoda ustawiania powinna być statyczna?

Odpowiedz

38

Metoda z atrybutem ClassInitialize jest uruchamiana raz dla wszystkich testów w klasie. Instancja klasy jest tworzona przy każdym uruchomieniu testu, więc musi być statyczna, aby uruchomić ją tylko raz.

Jeśli chcesz zainicjować dla każdego testu, możesz użyć atrybutu TestInitialize, który będzie działał po utworzeniu nowej instancji klasy (przed uruchomieniem testu).

Jeśli potrzebujesz więcej informacji, można sprawdzić:

That Pesky MSTest Execution Ordering

+11

Dzięki, nie wiedziałem instancja została stworzona dla każdego testu. – ProfK

+5

Nie sądzę, że metoda musi być statyczna, aby uruchomić tylko raz. Ramy testowe inicjują i poprawnie klasy testowe. Może łatwo wywołać metodę niestatyczną przed i po uruchomieniu wszystkich metod testowych. – d512

+0

Jeśli nie byłby statyczny, inicjalizacji nie można udostępnić wszystkim instancjom testowym. To znaczy. jeśli musisz zainicjować fałszywą usługę używaną przez wszystkie testy. – user3285954

Powiązane problemy