Я должен записать модульный тест на некоторый код C++, который проверяет на присутствие переменной окружения. Я использую 2008 MSVS и gtest как моя платформа. Я добавляю переменную окружения с помощью putenv, я проверяю переменную окружения с помощью getevn, но я не могу выяснить, как удалить ее так, чтобы никакой другой тест не видел его. Я понимаю, что это, вероятно, легко, но я не могу найти ответ в Интернете.Спасибо
Повторный вызов putenv
с указанием "SOME_VAR ="
в качестве параметра приведет к удалению переменной среды SOME_VAR
. Кстати, Microsoft рекомендует использовать _putenv
, поскольку putenv
устарел.
Вы всегда можете выполнить fork / выполнить подпроцесс, чтобы выполнить только тестирование putenv
/ getenv
, а затем, когда оно завершится, не будет никаких случайных ошибок. окружающая среда оставлена вокруг.
вы можете использовать функцию unsetenv
.
Если в vc2008 отсутствует эта функция, вы можете получить прямой доступ к окружению, используя getenv_s
, и удалить запись вручную, имитируя unsetenv
.
Как насчет установки env var в пустую строку?
Из cmd.exe это работает:
set SOMEVAR=something
echo %SOMEVAR%
set SOMEVAR=
echo %SOMEVAR%
Где последний показывает, что он был удален.