4

我需要爲某些檢查環境變量存在的C++代碼編寫單元測試。我使用MSVS 2008和gtest作爲我的框架。我使用putenv添加環境變量,我使用getevn檢查環境變量,但我無法弄清楚如何刪除它,以便其他測試不會看到它。我意識到這可能很容易,但我無法在互聯網上找到答案。謝謝以編程方式刪除環境變量

回答

9

再次指定"SOME_VAR="作爲參數調用putenv將刪除環境變量SOME_VAR。順便說一句,微軟建議使用_putenv作爲putenv已棄用。

+0

注意,至少在Solaris上有一個在男人頁面此功能沒有提及。 – 2010-07-08 16:04:18

+0

他正在使用MSVS 2008.暗示他正在開發Windows。在Linux上,我會使用setenv和unsetenv。不知道Solaris是否有這些。 – 341008 2010-07-08 16:36:13

1

你可以使用unsetenv函數。

如果vc2008缺少此功能,可以使用getenv_s直接訪問環境,並手動刪除條目,模擬unsetenv

+0

這實際上可以在Windows上使用,而不使用POSIX子系統嗎?谷歌正在轉動起來...... – 2010-07-08 15:30:42

2

你總是可以fork/exec一個子進程來完成測試,然後當它終止時,沒有任何雜亂的環境。

+1

我想到的是不一致的結果,但拍攝了清晰的解決方案 – Steve 2010-07-08 15:37:56

1

如何將env var設置爲空字符串?

從CMD.EXE,這個工程:

set SOMEVAR=something 
echo %SOMEVAR% 
set SOMEVAR= 
echo %SOMEVAR% 

其中最後一個表明它已被刪除。

相關問題