【发布时间】:2010-07-08 15:23:33
【问题描述】:
我需要为一些 C++ 代码编写一个单元测试来检查环境变量的存在。我使用 MSVS 2008 和 gtest 作为我的框架。我使用 putenv 添加环境变量,我使用 getevn 检查环境变量,但我不知道如何删除它,以免其他测试看到它。我意识到这可能很容易,但我在互联网上找不到答案。谢谢
【问题讨论】:
标签: c++ visual-studio-2008 unit-testing environment-variables
我需要为一些 C++ 代码编写一个单元测试来检查环境变量的存在。我使用 MSVS 2008 和 gtest 作为我的框架。我使用 putenv 添加环境变量,我使用 getevn 检查环境变量,但我不知道如何删除它,以免其他测试看到它。我意识到这可能很容易,但我在互联网上找不到答案。谢谢
【问题讨论】:
标签: c++ visual-studio-2008 unit-testing environment-variables
再次调用putenv 并指定"SOME_VAR=" 作为参数将删除环境变量SOME_VAR。顺便说一句,Microsoft 建议使用 _putenv,因为 putenv 已弃用。
【讨论】:
您总是可以 fork/exec 一个子进程来执行 putenv/getenv 测试,然后当它终止时,周围没有任何杂散环境。
【讨论】:
如何将环境变量设置为空字符串?
在 cmd.exe 中,这可行:
set SOMEVAR=something
echo %SOMEVAR%
set SOMEVAR=
echo %SOMEVAR%
最后一个显示已被删除的地方。
【讨论】:
您可以使用unsetenv 函数。
如果vc2008缺少这个功能,可以直接使用getenv_s访问环境,手动移除入口,模拟unsetenv。
【讨论】: