【发布时间】:2016-05-30 11:01:44
【问题描述】:
在将我们的解决方案从 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 吗?
【问题讨论】:
-
可能与this issue有关
-
另外,举例说明您如何使用自己的 IoC 可能会很有用,因为无论您使用什么来构建被测系统,Specflow 都将使用其 IoC 进行测试。
标签: c# nunit ninject specflow ncrunch