2011-08-31 3 views
8

MSTest를 사용하여 Selenium에서 웹 테스트를 만들고 테스트가 실패 할 때마다 스크린 샷을 찍고 싶지만 테스트가 통과 할 때마다 찍지 않으려 고합니다. .MSTest에서 마지막 테스트가 통과했는지 확인하는 방법 (TestCleanup)

내가 원했던 것은 스크린 샷 기능을 [TestCleanup] 메서드 안에 넣고 테스트가 실패한 경우 실행했지만 테스트가 통과 된 경우 실행하지 않는 것입니다. 그러나 마지막 시험이 통과되었는지 어떻게 알 수 있습니까?

현재 시험을 통과하면 bool = false[TestInitialize]이고 bool = true입니다.

하지만 저는 이것이 아주 좋은 해결책이라고 생각하지 않습니다.

기본적으로 [TestCleanup]을 수행 할 때 마지막 테스트가 true/false인지 감지하는 방법을 찾고 있습니다.

답변

2

@MartinMussmann에 의한 대답은 정확하지만 완전하지 않습니다. (가) "TestContext" object 당신이 당신의 TestClass의 속성으로 선언해야합니다 필요에 액세스하려면 :

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

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

이 또한 following post에서 언급된다.

+0

맞습니다. 코드 단편에서 "TestContext는 유형이 TestContext이고, 정적이 아니어야하며 public이어야하며 읽기 전용이 아니어야합니다"라는 오류 메시지가 나타납니다. 그래서 속성을 다음과 같이 변경했습니다 : 'public TestContext TestContext {get; 세트; }' – LambdaCruiser

+0

@LambdaCruiser 맞다. 나는 그 제안에 대한 해답을 업데이트했다. –

11

솔루션

if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
{ 
    // some code 
} 
관련 문제