SpecFlow:当将NInject用作IoC时如何注入ScenarioContext

问题描述 投票:1回答:1

将我们的解决方案从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。仅将静态字段ScenarionContext.Current包装在一个类中,然后在单例上下文中注册该类,当然会将问题移到另一个地方。

当使用NInject代替SpecFlow的内置IoC时,有人知道如何注入ScenarionContext吗?

将解决方案从SpecFlow1.9更新到2.0,将NUnit2.6.4更新到3.2.1之后,当使用NCrunch TechTalk.SpecFlow.SpecFlowException执行SpecFlow测试时,我们得到了SpecFlowException:...

SpecFlow现在通过每个容器的插件支持其他容器。注入SpecFlows容器时只能使用一个容器。因此,如果您使用Ninject插件,则只能使用Ninject插件。

不幸的是,创建Ninject插件的开发人员没有将其发布到NuGet,因此您必须自己构建。

https://github.com/MattMcKinney/SpecFlow.Ninject

并且您可能想问他他的插件正在使用哪个许可证。

c# nunit ninject specflow ncrunch
1个回答
0
投票

SpecFlow现在通过每个容器的插件支持其他容器。注入SpecFlows容器时只能使用一个容器。因此,如果您使用Ninject插件,则只能使用Ninject插件。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.