1

對基本GET服務運行我們的Java集成測試時,我們的應用程序代碼無法檢索環境變量。但是,當我們運行應用程序本身時,它可以毫無問題地檢索變量。運行Java集成測試時未設置環境變量

我們正在用intellij作爲IDE在Mac(el captiain)上開發。我們已經在我們的bash_profile中導出了這些變量(例如export ORACLE_URL =「*************」)。我們可以在設置和刷新後回顯變量。

我們完全難以理解他們爲什麼在gradlew bootrun期間工作,而不是在測試運行期間工作。 bash_profile是否存儲本地環境變量的正確位置?

+0

本文可能會幫助您https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/ – panagdu

+0

環境變量必須存在於環境/之前/使用它們的過程是跑。我猜他們不在那裏,當你開始intellij ... –

+0

@panagdu - 對話飼料非常有趣。它提供了幾個方向。對於我們來說,運行命令「launchctl setenv USERNAME mrSmith」看起來很完美。我們已將此添加到.bash_profile – PandD

回答

0

我們目前爲junit測試創建環境變量的解決方案是運行命令「launchctl setenv USERNAME mrSmith」。將其添加到.bash_profile以在重新啓動之間保持變量。

但是Chii的答案似乎是更明智的行動路徑。我們還沒有設法讓這個解決方案在我們的Intellij實例中工作。

0

設置通過運行配置環境變量測試,如果你想從的IntelliJ運行它,而不是在你的.bash_profile(當您啓動終端它運行。

參見環境變量部分here(我假設你使用的是junit,但我認爲所有的運行配置都有環境變量部分)

+0

我們試着將它添加到應用程序部分的Intellij config菜單中,然後將其添加到spring引導部分,然後特別指定缺省值> junit部分。當我們調用「System.getenv(」USERNAME「)」時,這些似乎都沒有註冊。 – PandD

+0

如果你的測試產生自己的進程(例如你的GET服務),那麼新進程將不會保持相同的env變量。但測試本身並沒有獲得正確的環境變量似乎很奇怪。我會將此報告給intellij作爲錯誤! – Chii