在将我们的解决方案从 SpecFlow1.9 更新到 2.0 并将 NUnit2.6.4 更新到 3.2.1 之后,当使用 NCrunch 执行 SpecFlow 测试时,我们会收到 SpecFlowException
TechTalk.SpecFlow.SpecFlowException : The ScenarioContext.Current static accessor cannot
be used in multi-threaded execution. Try injecting the scenario context to the binding
class. See http://go.specflow.org/doc-multithreaded for details.
at TechTalk.SpecFlow.ScenarioContext.get_Current()
异常文本中的链接http://go.specflow.org/doc-multithreaded建议的解决方案仅在您使用 SpecFlow 的内置迷你 IoC 时有效。但是,我们在 SpecFlow 测试中使用 NInject 作为 IoC。只需将静态字段 ScenarioContext.Current 包装在一个类中并在单例上下文中注册该类当然只是将问题转移到另一个地方。
当使用 NInject 而不是 SpecFlow 的内置 IoC 时,有人知道如何注入 ScenarioContext 吗?