Visual studio 2015 如何在Visual Studio测试中使用ASP.NET核心环境变量

Visual studio 2015 如何在Visual Studio测试中使用ASP.NET核心环境变量,visual-studio-2015,asp.net-core,environment-variables,integration-testing,visual-studio-2017,Visual Studio 2015,Asp.net Core,Environment Variables,Integration Testing,Visual Studio 2017,在集成测试中,当测试在开发环境中运行时,我想设置一个特定的连接字符串,当测试在临时环境中运行时,我想设置另一个连接字符串 当我没有处于测试模式时,我只需在机器上设置环境变量,所有工作正常。但是在测试中,我可以使用UseEnvironment(envX),但在所有机器上都可以使用envX,或者不使用此方法,并获得默认方法(即生产) 那么,如何在集成测试中使用基于环境的多个连接字符串呢?在运行测试之前,您可以设置环境变量ASPNETCORE\u environment 也就是说,SET ASPNET

在集成测试中,当测试在开发环境中运行时,我想设置一个特定的连接字符串,当测试在临时环境中运行时,我想设置另一个连接字符串

当我没有处于测试模式时,我只需在机器上设置环境变量,所有工作正常。但是在测试中,我可以使用
UseEnvironment(envX)
,但在所有机器上都可以使用
envX
,或者不使用此方法,并获得默认方法(即生产)


那么,如何在集成测试中使用基于环境的多个连接字符串呢?

在运行测试之前,您可以设置环境变量
ASPNETCORE\u environment


也就是说,
SET ASPNETCORE\u ENVIRONMENT=Test
SET ASPNETCORE\u ENVIRONMENT=SomeOtherEnvironment
如果使用
IHostingEnvironment
检查集成测试代码中的环境,则可以覆盖
IHostingEnvironment.ENVIRONMENT name
中的值:

//IHostingEnvironment env;

env.EnvironmentName = 'Development';
env.IsDevelopment() // return true;

env.EnvironmentName = 'TEST';
env.IsDevelopment() // return false;
env.IsEnvironment('TEST') // return true;

如果正在运行
dotnet测试
,则可以先在PowerShell窗口中本地设置环境变量:

 $env:ASPNETCORE_ENVIRONMENT="test"
 dotnet test

在VisualStudio中运行单元测试时,在哪里设置环境变量?我在cmd上运行了这个命令,但在调试测试时,我可以看到env.name仍然是production。如果您只是在VisualStudio中运行它,我认为您目前无法执行此操作。如果从控制台运行或编写小脚本,可以先设置环境变量,然后运行
dotnet test
。在多个环境上运行同一测试时,这对我有何帮助?同样的测试有时应该在envX上运行,有时应该在envY上运行