В MSTest, как проверить, прошел ли последний тест (в TestCleanup)

Я создаю веб-тесты в Selenium с помощью MSTest и хочу снимать скриншот каждый раз, когда тест терпит неудачу, но я не хочу принимать его каждый раз, когда проходит тест.

Я хотел бы сделать функцию скриншота внутри метода [TestCleanup] и запустить ее, если тест завершился неудачно, но не прошел тест. Но как мне понять, прошел ли последний тест?

В настоящее время я выполняю bool = false на [TestInitialize] и bool = true, если тест проходит.

Но я не думаю, что это очень хорошее решение.

Итак, в основном я ищу способ определить, действительно ли последний тест true/false при выполнении [TestCleanup].

Ответ 1

Ответ @MartinMussmann правильный, но неполный. Чтобы получить доступ к объекту "TestContext", вам нужно обязательно объявить его как свойство в вашем TestClass:

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

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

Это также упоминается в следующем посте.

Ответ 2

Решение

if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed)
{
    // some code
}