1

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

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

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

我错过了上面链接中的任何内容吗?

4

2 回答 2

3

TL;博士:

TestOutputHelper使用此库时,请确保将类型也注册为 self。

更长的版本:

https://github.com/dennisroche/xunit.ioc.autofac/blob/master/src/xunit2.ioc.autofac/AutofacTestInvoker.cs)需要具体类AutofacTestInvoker(不是!)来调用,这在接口,并通过创建的. 在您的示例中,您将其注册为接口,因此对于 Autofac,根本没有 TestOutputHelper 可用于解析。TestOutputHelperITestOutputHelperTestOutputHelper.Initialize(IMessageBus, ITest)ILifetimeScope

编辑:文档已被改编。有关详细信息,请参阅https://github.com/dennisroche/xunit.ioc.autofac/pull/9

于 2017-04-20T11:21:20.973 回答
0

您正在注册ITestOutputHelper,而不是TestOutputHelper,似乎后者是某些构造函数所需要的。

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

于 2017-04-18T14:48:17.747 回答