2015-06-11 2 views
2

У меня есть куча автоматизированных тестов пользовательского интерфейса с Selenium и MSTest.Выполнить код при ошибке тестирования

Когда тест не удается, мне нужно сделать снимок экрана без браузера, чтобы я мог диагностировать, что происходит.

В настоящее время я делаю это с попыткой поймать бросок, но нужно повторять в каждом тесте.

[TestMethod] 
public void TestThings() 
{ 
    try 
    { 
     // do things 
     Assert.Fail(); 
    } 
    catch (Exception ex) 
    { 
     Driver.TakeScreenshot(); 
     throw; 
    } 
} 

Повторяющийся шаблонный код меня огорчает, должен быть лучший способ. Есть ли какая-то некоторая вещь, с которой я могу подключиться, чтобы заниматься этим?

ответ

2

Вероятно, проще всего сделать, это использовать TestCleanup и проверить результаты тест там:

// This will be set by the test framework. 
public TestContext TestContext { get; set; } 

[TestCleanup] 
public void AfterTest() 
{ 
    if (TestContext.CurrentTestOutcome != UnitTestOutcome.Passed) 
    { 
     Driver.TakeScreenshot(); 
    } 
} 

Вы можете поместить это в базовом классе и наследует все тестовые классы от него, так что вы не имеете чтобы скопировать его в каждый класс.

+0

Отлично работает, есть ли способ получить сообщение об ошибке из этого объекта? –

+0

@ LukeMcGregor На самом деле я не думаю, что вы можете. Что вы хотите с этим делать? –

+0

Я использую его для обозначения выходного файла, если он не может сделать свою не огромную проблему –

Смежные вопросы