测试类找不到连接字符串

vai*_*dil 3 c# asp.net-core-mvc .net-core asp.net-core

我正在 .NET Core 中编写一些集成测试,但我无法运行测试,因为连接字符串返回 null。我的代码Startup.cs如下,我确实appsettings.json按照这些答案复制到测试项目中。我错过了什么?

编辑:我想出如何一步通过单元测试,以及环境被设置为生产,即使我明确地设置ASPNETCORE_ENVIRONMENTdevelopment测试和主要项目都。我正在调试模式下构建。我不知道我应该在哪里设置这个。无论哪种方式,应该拉一个值,而不是空-无论是appsettings.development.jsonappsettings.production.json有一个字符串,和通用appsettings.json低于(同发展)。

编辑 2:测试项目似乎完全忽略了我设置的任何配置。Startup无论我是否告诉它,它都在运行主项目。我删除了对它的所有引用,它仍在尝试运行它。

Startup.cs

public IConfigurationRoot Configuration { get; }

public Startup(IHostingEnvironment env)
{
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", true, true)
        .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
        .AddEnvironmentVariables();

    Configuration = builder.Build();
}

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<MyContext>(options =>
        options.UseSqlServer(Configuration.GetConnectionString("MyDatabase")));
}
Run Code Online (Sandbox Code Playgroud)

appsettings.json

{
  "ConnectionStrings": {
    "MyDatabase": "Server=localhost;Database=MyDevLocal;Trusted_Connection=True;"
  }
}
Run Code Online (Sandbox Code Playgroud)

Hun*_*son 5

这对我有用

var builder = new WebHostBuilder() .UseStartup<Startup>() .UseSetting("ConnectionStrings:DefaultConnection", /*Your conn string*/)