如何使用TechTalk.SpecFlow和C#以编程方式验证测试失败?

如何使用TechTalk.SpecFlow和C#以编程方式验证测试失败?,c#,specflow,acceptance-testing,C#,Specflow,Acceptance Testing,在[Binding]属性标记类的测试失败后,我想执行[posterstrun]属性标记方法。我如何实现以下目标: [Binding] public class TestsRunner { [AfterTestFails] // There is no such attribute public static void DoStuff() { } } 或 正如你所说,这些东西并不存在。这可能是因为您正在尝试使用SpecFlow执行一些它没有被设计用来执行的操作 别忘了S

[Binding]
属性标记类的测试失败后,我想执行
[posterstrun]
属性标记方法。我如何实现以下目标:

[Binding]
public class TestsRunner
{
   [AfterTestFails] // There is no such attribute
   public static void DoStuff()
   {

   }
}


正如你所说,这些东西并不存在。这可能是因为您正在尝试使用SpecFlow执行一些它没有被设计用来执行的操作

别忘了SpecFlow所做的一切就是在单元测试框架(如NUnit、XUnit或MSTest)和支持小黄瓜格式的纯文本场景之间架起一座桥梁

如果您想做这些与测试运行相关的事情,那么您可能需要查看单元测试框架,或者更可能的是,构建您自己的测试运行程序


顺便说一句,你到底想做什么?

正如你所说,这些东西并不存在。这可能是因为您正在尝试使用SpecFlow执行一些它没有被设计用来执行的操作

别忘了SpecFlow所做的一切就是在单元测试框架(如NUnit、XUnit或MSTest)和支持小黄瓜格式的纯文本场景之间架起一座桥梁

如果您想做这些与测试运行相关的事情,那么您可能需要查看单元测试框架,或者更可能的是,构建您自己的测试运行程序


顺便说一句,你到底想做什么?

在阅读了一些文档后,我找到了下一个解决方案:

[Binding]
public class TestsRunner
{
    [AfterScenario]
    public void TakeScreenShot()
    {
        if(ScenarioContext.Current.TestError != null)
        {
            WebBrowser.TakeScreenShot(); // Your custom browser take screenshot method 
        }
    }
}

在阅读了一些文档之后,我找到了下一个解决方案:

[Binding]
public class TestsRunner
{
    [AfterScenario]
    public void TakeScreenShot()
    {
        if(ScenarioContext.Current.TestError != null)
        {
            WebBrowser.TakeScreenShot(); // Your custom browser take screenshot method 
        }
    }
}

好的,谢谢你的帮助,但是在阅读了一些文档之后,我已经找到了解决方案。我想在测试无法看到页面上到底发生了什么时拍摄页面屏幕截图,这就是一个确切的例子。啊哈!很好的截图示例:-)好的,谢谢你的帮助,但是在阅读了一些文档之后,我已经找到了解决方案。我想在测试无法看到页面上到底发生了什么时拍摄页面屏幕截图,这就是一个确切的例子。啊哈!截图也是一个很好的例子:-)