2011-08-31 8 views
8

Tworzę testy sieciowe w Selenium przy użyciu MSTest i chcę zrobić zrzut ekranu za każdym razem, gdy test się nie powiedzie, ale nie chcę brać go za każdym razem, gdy test przechodzi .W MSTest, jak sprawdzić, czy ostatni test przeszedł (w TestCleanup)

Co chciałem zrobić, to umieścić funkcję zrzutu ekranu w metodzie [TestCleanup] i uruchomić ją, jeśli test się nie powiedzie, ale nie, jeśli test minął. Ale jak mogę się dowiedzieć, czy minął ostatni test?

Obecnie wykonuję bool = false na [TestInitialize] i bool = true, jeśli test zostanie przeprowadzony.

Ale nie sądzę, że to bardzo dobre rozwiązanie.

Tak więc, w zasadzie szukam sposobu, aby wykryć, czy ostatni test jest prawdziwy/fałszywy podczas wykonywania [TestCleanup].

Odpowiedz

2

Odpowiedź przez @MartinMussmann jest poprawne, ale niekompletne. Aby uzyskać dostęp do "TestContext" object trzeba upewnić zadeklarować ją jako własność w swojej TestClass:

[TestClass] 
public class BaseTest 
{ 
    public abstract TestContext TestContext { get; } 

    [TestCleanup] 
    public void TestCleanup() 
    { 
     if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
     { 
      // some code 
     } 
    } 
} 

to również wspomniane w following post.

+0

Zgadza się, ale fragment kodu dał mi błąd "TestContext musi być typu TestContext, musi być niestatyczny, publiczny i nie może być tylko do odczytu". Więc zmieniłem właściwość na: 'public TestContext TestContext {get; zestaw; } ' – LambdaCruiser

+0

@LambdaCruiser Prawidłowo, zaktualizowałem odpowiedź za pomocą tej sugestii –

11

Rozwiązanie

if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
{ 
    // some code 
} 
Powiązane problemy