我希望在[AfterTestRun]
属性标记为class的测试失败后执行[Binding]
属性标记方法。我怎样才能实现以下目标:
[Binding]
public class TestsRunner
{
[AfterTestFails] // There is no such attribute
public static void DoStuff()
{
}
}
或
[Binding]
public class TestsRunner
{
[AfterTestRun]
public static void DoStuff()
{
if(ScenarioContext.Current.TestHasFailed) // There is no such property
{
// Do stuff
}
}
}
答案 0 :(得分:7)
阅读了一些文档here后,我找到了下一个解决方案:
[Binding]
public class TestsRunner
{
[AfterScenario]
public void TakeScreenShot()
{
if(ScenarioContext.Current.TestError != null)
{
WebBrowser.TakeScreenShot(); // Your custom browser take screenshot method
}
}
}
答案 1 :(得分:1)
正如你所说,这些东西不存在。这可能是因为你试图用SpecFlow做一些它没有被设计的东西。
不要忘记所有SpecFlow都是为了弥合单元测试框架(如NUnit,XUnit或MSTest)与Gherkin格式支持纯文本场景之间的差距。
如果你想做与运行测试有关的这些事情,那么你可能需要查看单元测试框架,或者更有可能建立自己的测试运行器。
顺便说一下,你真正想做的是什么?