.net core 使用MsTest运行单元测试时访问local.settings.json配置值

.net core 使用MsTest运行单元测试时访问local.settings.json配置值,.net-core,environment-variables,azure-functions,mstest,.net Core,Environment Variables,Azure Functions,Mstest,我有一个http触发器azure函数,我正在调用该函数中的一个服务。在该服务中,我使用 Environment.GetEnvironmentVariable(key, EnvironmentVariableTarget.Process); 但当我调试/运行测试时,返回的值为null。 因此,我尝试在TestClass中设置环境变量,如下所示 Environment.SetEnvironmentVariable(key, value, EnvironmentVariableTarget.Proc

我有一个http触发器azure函数,我正在调用该函数中的一个服务。在该服务中,我使用

Environment.GetEnvironmentVariable(key, EnvironmentVariableTarget.Process);
但当我调试/运行测试时,返回的值为null。 因此,我尝试在TestClass中设置环境变量,如下所示

Environment.SetEnvironmentVariable(key, value, EnvironmentVariableTarget.Process);
之后,它将返回TestClass中设置的值。 你能帮我了解一下这种方法是否有负面影响吗


我正在使用.netCore 2.2和Azure功能版本2,我看不到对它有任何负面影响,因为范围仅限于流程。
**GetEnvironmentVariable(String)**
方法仅从当前进程的环境块检索环境变量。这相当于调用目标值为
EnvironmentVariableTarget.Process
GetEnvironmentVariableVariable(String,EnvironmentVariableTarget)
方法

通过调用
SetEnvironmentVariable(String,String)
方法或目标值为
EnvironmentVariableTarget.process的
setEnvironmentVariableTarget)
方法,在进程运行时添加到进程块的任何变量。这些环境变量一直存在,直到.NET应用程序终止

因此,如果您担心测试数据是否会干扰您的实际执行,那么情况就不会如此,因为一旦测试用例执行完成,它就会被终止

但在我看来,出于可伸缩性的目的,我会维护一个单独的环境变量(在Actuala和测试用例之间),因为多个环境(例如开发、测试、登台)可能有不同的测试值

附加参考:


希望有帮助。

非常感谢,下面的情况也一样吗?var configValue=Environment.GetEnvironmentVariable(键,EnvironmentVariableTarget.Process);返回配置值??ConfigurationManager.AppSettings[键];因为我使用一个函数来获取主应用程序中的配置值,并且该函数具有上述实现。因此,如果我将单元测试放在像Octopus这样的CI/CD平台上,配置值会受到CI/CD平台环境变量的影响吗?