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

Accessing local.settings.json config values when running unit tests using MsTest

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

访问环境变量
Environment.GetEnvironmentVariable(key, EnvironmentVariableTarget.Process);

但是当我 debug/run 我的测试值返回为 null。 所以我尝试在我的 TestClass 中设置环境变量,如下所示,

Environment.SetEnvironmentVariable(key, value, EnvironmentVariableTarget.Process);

之后它返回我的 TestClass 中设置的值。 能否请您帮助我了解这种方法是否有任何负面影响?

我正在使用 .netCore 2.2 和 Azure Functions 版本 2

我认为它没有任何负面影响,因为范围仅限于流程。 **GetEnvironmentVariable(String)** 方法仅从当前进程的环境块中检索环境变量。相当于调用目标值为EnvironmentVariableTarget.Process.

GetEnvironmentVariable(String, EnvironmentVariableTarget)方法

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

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

但在我看来,出于可扩展性目的(在 Actuala 和测试用例之间),我会维护一个单独的环境变量作为多个环境,例如dev、test、staging 可能有不同的测试值。

其他参考资料:

https://docs.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=netframework-4.8

希望对您有所帮助。