的xUnit测试与autofac
我跟着这个链接https://github.com/dennisroche/xunit.ioc.autofac创建的xUnit测试与autofac,但我得到了错误的xUnit测试与autofac
所请求的服务“Xunit.Sdk.TestOutputHelper”尚未注册。为避免此异常,请注册组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解析可选的依赖项。 我已经添加下面的代码:
builder.Register(context => new TestOutputHelper())
.As<ITestOutputHelper>()
.InstancePerLifetimeScope();
难道我从上面的链接错过了什么?
TL; DR:
确保使用这个库时注册类型TestOutputHelper
也为自己。
加长版:
的AutofacTestInvoker
(https://github.com/dennisroche/xunit.ioc.autofac/blob/master/src/xunit2.ioc.autofac/AutofacTestInvoker.cs)所需要的具体类TestOutputHelper
调用TestOutputHelper.Initialize(IMessageBus, ITest)
,这是不是在接口可用,并在创建ILifetimeScope
解决它(不ITestOutputHelper
!)。在你的例子中,你将它注册为接口,所以对于Autofac,根本没有可用的TestOutputHelper。
编辑:文档已被修改。详情请参阅https://github.com/dennisroche/xunit.ioc.autofac/pull/9。
正在注册ITestOutputHelper,不TestOutputHelper,似乎后来被一些构造要求。
如果您在某些测试中使用TestOutputHelper,则应将其替换为ITestOutputHelper。
我没有用TestOutputHelper,我用ITestOutputHelper,似乎还有某处库使用TestOutputHelper –
我把它注册为'builder.RegisterType()。AsSelf()。由于()。InstancePerLifetimeScope ();' –
这会工作,是的。 –