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

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

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

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

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

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


person Martin Mussmann    schedule 31.08.2011    source источник


Ответы (2)


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

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

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

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

person David Rogers    schedule 18.01.2017
comment
Это верно, но фрагмент кода дал мне ошибку TestContext должен иметь тип TestContext, должен быть нестатическим, общедоступным и не должен быть доступен только для чтения. Поэтому я изменил свойство на: public TestContext TestContext { get; set; } - person LambdaCruiser; 23.08.2017
comment
@LambdaCruiser Правильно, я обновил ответ этим предложением - person David Rogers; 23.08.2017

Решение

if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed)
{
    // some code
}
person Martin Mussmann    schedule 01.09.2011