在使用 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.Process
的 SetEnvironmentVariable(String, String)
方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget)
方法添加到进程块的任何变量。这些环境变量一直存在,直到 .NET 应用程序终止。
所以,如果您担心测试数据是否会干扰您的实际执行,那么情况不会如此,因为一旦测试用例执行完成,它就会终止。
但在我看来,出于可扩展性目的(在 Actuala 和测试用例之间),我会维护一个单独的环境变量作为多个环境,例如dev、test、staging 可能有不同的测试值。
其他参考资料:
希望对您有所帮助。
我有一个 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.Process
的 SetEnvironmentVariable(String, String)
方法或 SetEnvironmentVariable(String, String, EnvironmentVariableTarget)
方法添加到进程块的任何变量。这些环境变量一直存在,直到 .NET 应用程序终止。
所以,如果您担心测试数据是否会干扰您的实际执行,那么情况不会如此,因为一旦测试用例执行完成,它就会终止。
但在我看来,出于可扩展性目的(在 Actuala 和测试用例之间),我会维护一个单独的环境变量作为多个环境,例如dev、test、staging 可能有不同的测试值。
其他参考资料:
希望对您有所帮助。