java—如何在集成测试运行之前加载环境变量以加载应用程序上下文

baubqpgj  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(674)

我正在使用springboot2.4.0开发多模块maven项目。我已经为一个模块编写了集成测试。测试类与此类似。

@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringApplicationClassWithMainMethod.class)
public class XYZServiceIT {

@Test
public void test1() {...}

@Test
public void test2() {...}
}

为了运行springapplicationclasswithmainmethod.class,即为了加载应用程序上下文,我需要在eclipse中设置一些环境变量。因此,为了在加载springapplicationclasswithmainmethod.class时运行上述集成测试,我需要在加载应用程序上下文之前使用这些环境变量。
试用1:我试过使用@testpropertysource(properties={“key1=val1”,“key2=val2”})注解,但没有成功。
试用2:我也试过使用静态块来设置环境变量,但是没有效果。
trial-3:我还尝试将@contextconfiguration与applicationcontextinitializer类一起使用,但效果并不理想。
所有这些使用maven构建项目的尝试只会导致
illegalstate未能加载applicationcontext
上述测试类出错。在加载应用程序上下文之前,是否有任何方法可以加载环境变量?

wnavrhmk

wnavrhmk1#

我认为maven中集成测试的正确类命名约定是 XYZServiceIT*Test 是为已经在应用程序上下文之前运行的单元测试保留的。如果需要的话,您可以在maven pom中更改它,或者只需坚持传统的命名。
更新
要将环境变量传递给maven进行集成测试,请使用以下命令:
确保您从eclipse市场安装了m2e(位于菜单>帮助>eclipse市场)

右键单击项目>运行方式…>4 maven构建。。。ps:之后,如果以后需要重新运行测试,您可以在绿色箭头下拉列表的顶部和运行配置设置中找到您的运行配置

使用以下方式配置maven环境参数:内联(对于maven goal命令) verify -Dkey=val 或者在底部变量部分。两者都适用于单元测试和集成测试。环境通常不适用于测试阶段(如果您没有jdk作为运行程序,您将得到一个错误。如果需要的话,请按照本文进行修复:此环境中没有提供编译器。也许您运行的是jre而不是jdk?)

我希望这有帮助。如果需要,也可以更改pom.xml配置文件,但我不建议这样做。

相关问题