繁体   English   中英

在哪里为 .NET5 测试项目连接依赖注入?

[英]Where to wire dependency injection for .NET5 test project?

我有一个测试项目,用于测试 13 个大型项目解决方案的各个部分。 许多这些测试需要数据库访问(连接到测试数据库)和大量服务才能工作。 目前,我所有的测试类都继承自一个通用 BaseTest 类,该类通过在 BaseTest 构造函数中调用以下代码来注册 DI:

public IHostBuilder CreateHostBuilder(string[] args = null) =>
    Host.CreateDefaultBuilder(args)
        .UseSerilog()
        .ConfigureServices((hostContext, services) =>
        {
            //Omitted for brevity

            _mediator = _provider.GetService<IMediator>();
        });

这工作得很好,但我怀疑每个测试类都不必要地调用它。 是否有等效于 Program.cs 或测试项目可以调用此代码一次的某种方式? 我可以将此代码从基础构造函数移到何处以实现此目的?

我最终切换到 XUnit。 功能更加丰富,xUnit.DependencyInjection nuget 包支持直接使用 Startup.cs 进行依赖注入,就像我们习惯的那样,无需额外配置即可直接使用:

public class Startup
{
    public static void ConfigureHost(IHostBuilder hostBuilder)
    {
        hostBuilder.UseSerilog();
    }

    public static void ConfigureServices(IServiceCollection services)
    {
        services.AddSingleton<ISomeService, SomeService>();
        //...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM