当测试失败时,挂接NUnit或SpecFlow

当测试失败时,挂接NUnit或SpecFlow,nunit,specflow,Nunit,Specflow,因此,我使用SpecFlow和NUnit来开发使用Selenium的web应用程序的端到端验收测试。我们要做的一件事是尝试评估失败的性质,即在回归测试失败时拍摄浏览器的屏幕截图。目前,我正在用try/catch块包装我的每个测试,然后用Selenium在catch中截图,重新显示异常。这是可行的,但它使测试更加混乱和乏味 在任何测试失败时,NUnit或SpecFlow中是否有方法在调用任何拆卸方法之前调用钩子?您可以使用ScenarioContext来检测场景是否生成错误 ScenarioCon

因此,我使用SpecFlow和NUnit来开发使用Selenium的web应用程序的端到端验收测试。我们要做的一件事是尝试评估失败的性质,即在回归测试失败时拍摄浏览器的屏幕截图。目前,我正在用try/catch块包装我的每个测试,然后用Selenium在catch中截图,重新显示异常。这是可行的,但它使测试更加混乱和乏味


在任何测试失败时,NUnit或SpecFlow中是否有方法在调用任何拆卸方法之前调用钩子?

您可以使用ScenarioContext来检测场景是否生成错误

ScenarioContext.Current.TestError
如果不为null,则发生错误。您可以检查此项并使用它来确定是否拍摄屏幕截图。您可以在上看到一个示例

您还可以将其作为一个AfterScenario钩子,这样您就不需要到处都有try/Catch。它只需在测试结束时检查每个测试,查看是否发生错误以及是否创建屏幕截图