使用 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。
更长的版本:
AutofacTestInvoker
(https://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。
我按照此 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。
更长的版本:
AutofacTestInvoker
(https://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。