使用autofac进行XUnit测试

时间:2017-04-17 11:41:03

标签: autofac xunit2

我按照此链接https://github.com/dennisroche/xunit.ioc.autofac使用autofac创建XUnit测试,但是我收到了错误

  

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

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

我是否遗漏了上述链接中的任何内容?

2 个答案:

答案 0 :(得分:2)

TL; DR:

使用此库时,请务必将类型TestOutputHelper注册为self。

更长的版本:

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