运行Java集成测试时未设置环境变量

运行Java集成测试时未设置环境变量,java,intellij-idea,environment-variables,integration-testing,gradlew,Java,Intellij Idea,Environment Variables,Integration Testing,Gradlew,在为基本GET服务运行Java集成测试时,应用程序代码无法检索环境变量。但是,当我们运行应用程序本身时,它可以毫无问题地检索变量 我们正在开发一个Mac(el captiain),intellij是我们的IDE。我们已经导出了bash_配置文件中的变量(例如导出ORACLE_URL=“*************”)。我们可以在设置和刷新后回显变量 我们完全不明白为什么它们在gradlew引导运行期间工作,而在测试运行期间不工作。bash_配置文件是否是存储本地环境变量的正确位置?如果要从inte

在为基本GET服务运行Java集成测试时,应用程序代码无法检索环境变量。但是,当我们运行应用程序本身时,它可以毫无问题地检索变量

我们正在开发一个Mac(el captiain),intellij是我们的IDE。我们已经导出了bash_配置文件中的变量(例如导出ORACLE_URL=“*************”)。我们可以在设置和刷新后回显变量


我们完全不明白为什么它们在gradlew引导运行期间工作,而在测试运行期间不工作。bash_配置文件是否是存储本地环境变量的正确位置?

如果要从intellij而不是在bash_配置文件(启动终端时运行)中运行环境变量,请通过测试的运行配置设置环境变量


请参阅环境变量部分(我假设您使用的是junit,但我认为所有运行配置都有环境变量部分)

如果您希望从intellij而不是在bash_配置文件(启动终端时运行)中运行环境变量,请通过运行配置为您的测试设置环境变量


请参阅环境变量部分(我假设您使用的是junit,但我认为所有运行配置都有环境变量部分)

我们当前为junit测试创建环境变量的工作解决方案是运行命令“launchctl setenv USERNAME mrSmith”。我们已将其添加到.bash_配置文件中,以在重新启动之间持久化变量


然而,Chii的答案似乎是更明智的做法。我们还没有成功地在Intellij实例中使用此解决方案。

我们当前为junit测试创建环境变量的工作解决方案是运行命令“launchctl setenv USERNAME mrSmith”。我们已将其添加到.bash_配置文件中,以在重新启动之间持久化变量


然而,Chii的答案似乎是更明智的行动方式。我们还没有设法在Intellij实例中实现此解决方案。

本文可能会帮助您在运行使用环境变量的过程之前/环境变量必须存在于环境中。我猜在您启动Intellij时,环境变量不存在。..@panagdu-对话提要非常有趣。它提供了几个方向。对于我们来说,运行命令“launchctl setenv USERNAME mrSmith”似乎工作得很好。我们已经将此添加到了.bash中_profile@PandD很酷,很高兴能帮上忙。这篇文章可能会帮助你,环境变量必须存在于环境中/before/运行使用它们的进程之前。我猜在你启动intellij…@panagdu时它们不在那里-对话提要非常有趣。我t提供了几个方向。对于我们运行命令“launchctl setenv USERNAME mrSmith”似乎工作得很好。我们已经将此添加到了.bash中_profile@PandD很酷,很高兴它有所帮助。我们尝试将其添加到Intellij配置菜单的应用程序部分,然后是spring引导部分,特别是默认值>junit部分。当我们调用“System.getenv(“用户名”)时,这些似乎都没有注册。如果测试生成自己的进程(例如GET服务),新进程将不会保留相同的env变量。但奇怪的是,测试本身没有获得正确的env变量。我会将此作为错误报告给intellij!我们尝试将其添加到intellij配置菜单的应用程序部分,然后是spring引导部分,特别是默认值>junit部分。这些似乎都没有当我们调用“System.getenv(“USERNAME”)”时进行注册。如果您的测试正在生成自己的进程(例如,您的GET服务),那么新进程将不会保留相同的env变量。但奇怪的是,测试本身没有获得正确的env变量。我会将此作为错误报告给intellij!