我有一堆Selenium和MSTest的自动化UI测试。
当测试失败时,我需要截取无头浏览器的屏幕截图,以便我可以诊断发生了什么。
目前我使用try catch throw执行此操作,但需要在每次测试中重复。
[TestMethod]
public void TestThings()
{
try
{
// do things
Assert.Fail();
}
catch (Exception ex)
{
Driver.TakeScreenshot();
throw;
}
}
重复样板代码让我感到难过,必须有更好的方法。是否有一些onFailed的东西可以用来做这种事情?
答案 0 :(得分: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();
}
}
您可以将它放在基类中并从中继承所有测试类,这样您就不必将它复制到每个类中。