2017-04-17 94 views
0

我跟着这个链接https://github.com/dennisroche/xunit.ioc.autofac创建的xUnit测试与autofac,但我得到了错误的xUnit测试与autofac

所请求的服务“Xunit.Sdk.TestOutputHelper”尚未注册。为避免此异常,请注册组件以提供服务,使用IsRegistered()检查服务注册,或使用ResolveOptional()方法解析可选的依赖项。 我已经添加下面的代码:

 builder.Register(context => new TestOutputHelper()) 
      .As<ITestOutputHelper>() 
      .InstancePerLifetimeScope(); 

难道我从上面的链接错过了什么?

回答

1

TL; DR:

确保使用这个库时注册类型TestOutputHelper也为自己。

加长版:

AutofacTestInvokerhttps://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

+0

我把它注册为'builder.RegisterType ()。AsSelf()。由于()。InstancePerLifetimeScope ();' –

+0

这会工作,是的。 –

0

正在注册ITestOutputHelper,不TestOutputHelper,似乎后来被一些构造要求。

如果您在某些测试中使用TestOutputHelper,则应将其替换为ITestOutputHelper。

+0

我没有用TestOutputHelper,我用ITestOutputHelper,似乎还有某处库使用TestOutputHelper –