2012-07-02 16 views
7

Rozumiem, z MSDN, że ClassInitialize jest oznaczenie metody, która wykona kod instalacyjny dla wszystkich testów, raz, przed uruchomieniem wszystkich testów. Kiedy włączę taką metodę do skróconego urządzenia poniżej, wszystkie testy zakończą się niepowodzeniem. Jak tylko to skomentuję, znów mijają.Dlaczego metoda dekorowana ClassInitialize powoduje, że wszystkie moje testy zawodzą?

[TestClass] 
public class AuthenticationTests 
{ 
    [ClassInitialize] 
    public void SetupAuth() 
    { 
     var x = 0; 
    } 

    [TestMethod] 
    public void TestRegisterMemberInit() 
    { 
     Assert.IsTrue(true); 
    } 
} 
+3

Co oznacza niepowodzenie testu powiedzieć? –

+1

Oops. Część tekstowa okna błędu została "zminimalizowana" na samym dole. Naprawdę nie wiedziałem, że tam jest. Dzięki Jon, sprawiłeś, że spojrzałam na siebie i ostatecznie go znalazłam. – ProfK

Odpowiedz

16

[ClassInitialize] zdobione metoda powinna być statyczna i wziąć dokładnie jeden parametr typu TestContext:

[ClassInitialize] 
public static void SetupAuth(TestContext context) 
{ 
    var x = 0; 
} 

W rzeczywistości, jeśli mogę skopiować i wkleić kod do czystego VS projektu, TestRunner wyjaśnia dokładnie w komunikacie o błędzie:

Metoda UnitTestProject1.AuthenticationTests.SetupAuth ma nieprawidłową sygnaturę. Metoda musi być statyczna, publiczna, nie zwraca wartości i powinna przyjmować pojedynczy parametr typu TestContext.

+0

dzięki. Jak wyjaśniłem w komentarzu do mojego pytania, błąd w testerze został ukryty, tzn. Panel, w którym jest wyświetlany, był zbyt mały, aby mógł go zobaczyć. – ProfK

2

Metoda oznaczona [ClassInitialize]:

  1. Zastosuj tylko do jednej metody klasy testowej.
  2. Klasa musi być zapieczętowana, tzn. Nie odziedziczona.
  3. Metoda musi być publiczna statyczna.
  4. Metoda musi przejść parametr TestContext.
  5. Metoda nie zwraca wartości.
0

W VS2015, awaria mieć parametr TestContext powoduje to najbardziej nieprzydatne błąd będzie wyjście po uruchomieniu testu (w przypadku gdy ktoś szuka na wyjątek, podobnie jak ja):

wyjątkiem rzucone: „Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeInspectionException” w Microsoft.VisualStudio.TestPlatform.Extensions.VSTestIntegration.dll

Powiązane problemy