我按照此链接https://github.com/dennisroche/xunit.ioc.autofac使用autofac创建XUnit测试,但是我收到了错误
请求的服务'Xunit.Sdk.TestOutputHelper'尚未注册。要避免此异常,请注册组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解析可选依赖项。 我在下面添加了代码:
builder.Register(context => new TestOutputHelper())
.As<ITestOutputHelper>()
.InstancePerLifetimeScope();
我是否遗漏了上述链接中的任何内容?
答案 0 :(得分:2)
TL; DR:
使用此库时,请务必将类型TestOutputHelper
注册为self。
更长的版本:
AutofacTestInvoker
(https://github.com/dennisroche/xunit.ioc.autofac/blob/master/src/xunit2.ioc.autofac/AutofacTestInvoker.cs)需要具体的课程TestOutputHelper
(不是ITestOutputHelper
!)才能调用TestOutputHelper.Initialize(IMessageBus, ITest)
,这在界面中不可用,并通过创建的ILifetimeScope
解析它。在您的示例中,您将其注册为其界面,因此对于Autofac,根本没有可用于解析的TestOutputHelper。
编辑:文档已经过调整。有关详细信息,请参阅https://github.com/dennisroche/xunit.ioc.autofac/pull/9。
答案 1 :(得分:0)
您正在注册 ITestOutputHelper ,而不是 TestOutputHelper ,似乎某些构造函数需要更晚的版本。
如果您在某些测试中使用TestOutputHelper,则应将其替换为ITestOutputHelper。