测试失败时挂钩 NUnit 或 SpecFlow

Hook in NUnit or SpecFlow when a test fails

因此,我将 SpecFlow 与 NUnit 结合使用,以使用 Selenium 开发 Web 应用程序的端到端验收测试。我们尝试衡量失败性质的其中一件事是在回归测试失败时截取浏览器的屏幕截图。我目前正在通过将我的每个测试包装在 try/catch 块中来做到这一点,然后使用 Selenium 在 catch 中截取屏幕截图,然后重新抛出异常。这行得通,但它使测试更加混乱和乏味。

NUnit 或 SpecFlow 中是否有一种方法可以在任何测试失败时在调用任何拆卸方法之前调用挂钩?

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

ScenarioContext.Current.TestError

如果不为空,则发生错误。您可以检查它并使用它来确定是否截取屏幕截图。您可以在 SpecFlow's documentation reference 上查看示例。

您也可以将其设为 AfterScenario 挂钩,这样您就不需要在任何地方都使用 try/catches。它会在最后检查每个测试,看看是否发生错误以及是否创建屏幕截图。