使用 autofac 进行 XUnit 测试

XUnit Test with autofac

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

The requested service 'Xunit.Sdk.TestOutputHelper' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency. I have added below code:

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

我有没有漏掉上面的任何东西link?

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

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

长话短说:

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

更长的版本:

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

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