测试失败:没有注册类型 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' 的服务

Tests fail: No service for type 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' has been registered

当我 运行 我的 E2E 测试时出现异常:

No service for type 'Microsoft.Extensions.DependencyInjection.IServiceProviderFactory`1[Autofac.ContainerBuilder]' has been registered.

我遵循 the official Autofac documentation 在使用 .NET 版本 3+ 的项目中实施 Autofac,我可以 运行 解决方案很好,但我的测试失败了。

奇怪的是,当我使用 中的解决方案代码时,情况恰恰相反 - 我无法 运行 解决方案(返回 IServiceProvider 无效),但我的测试成功了:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options => options.EnableEndpointRouting = false)
            .SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

    services.AddCustomDbContext(Configuration);
    services.AddOptions();

    var container = new ContainerBuilder();
    container.Populate(services);
    return new AutofacServiceProvider(container.Build());
}

我做错了什么?

经过长时间的斗争,我终于成功了,这要归功于 this article

您的应用程序需要以 .NET 3.0+ 方式实现 Autofac,您需要 查看文章中的步骤“在 ASP.NET Core 2.x 中使用 WebApplicationFactory 添加 XUnit 日志记录”和“在 ASP.NET Core 3.0 中使用 WebApplicationFactory”以使测试工作,即添加测试夹具并使用而是创建一个客户端。