1

基本的なGETサービスに対してJava統合テストを実行する場合、アプリケーションコードは環境変数を取得できません。しかし、アプリケーション自体を実行すると、問題なく変数を取り出すことができます。Java統合テストの実行時に環境変数が設定されない

私たちはIDEとしてintellijを使ってMac(el captiain)で開発しています。変数をbash_profileにエクスポートしました(たとえば、エクスポートORACLE_URL = "*************")。そして、変数を設定したり、リフレッシュしたりしてエコーすることができます。

テスト実行中ではなく、gradlewブートローンでなぜ動作するのか完全にわかりません。 bash_profileはローカル環境変数を格納する正しい場所ですか?あなたはIntelliJのからそれを実行したい場合は

+0

この記事は、https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/ – panagdu

+0

環境変数が環境内に存在する必要があります/ before /それらを使用しているプロセスが走る私はあなたがintellijを開始したときに彼らがそこにいなかったと推測しています... –

+0

@panagdu - 会話のフィードは非常に面白かったです。それはいくつかの方向を提示した。私たちが "launchctl setenv USERNAME mrSmith"というコマンドを実行するのは完璧に動作していたようです。私たちはこれ以来、これを.bash_profile – PandD

答えて

0

junitテスト用の環境変数を作成する私たちの現在の解決策は、 "launchctl setenv USERNAME mrSmith"コマンドを実行することです。これを.bash_profileに追加して、再起動の間に変数を保持します。

しかし、Chiiの答えは、より賢明な行動経路であるようです。 Intellijのインスタンスでこのソリューションを使用することはできませんでした。

0

はあなたの端末の起動時に実行される(むしろあなたのbash_profileに比べて、あなたのテストのための実行構成を経由して、環境変数を設定します。

環境変数セクションhere(Iを参照してください。

+0

アプリケーションセクションのIntellij設定メニューにこれを追加してから、春の起動セクション、さらにはデフォルトのjunitセクションを追加しようとしました。これらのどれも、 "System.getenv(" USERNAME ")"と呼ばれたときは登録されていないようです。 – PandD

+0

あなたのテストが独自のプロセス(例えばGETサービス)を生成している場合、その新しいプロセスは同じenv変数を保持しません。しかし、テスト自体が正しい環境変数を取得していないことは奇妙に思えます。私はこれをintellijにバグとして報告します! – Chii

関連する問題