Spring Boot:如何在Spring Context启动时运行服务器并在执行测试的上下文关闭期间停止服务器?

时间:2019-05-10 16:20:14

标签: java spring spring-boot spring-boot-test

我的Spring Boot应用程序使用数据库服务器。在测试过程中,我想运行数据库的嵌入式版本。每次服务器都从一个随机端口启动(来自testcontainers.org)。

我尝试的第一件事是使用JUnit4的@ClassRule启动/停止服务器,但是Spring Boot很聪明,并且可以在测试类之间重用上下文。因此,对于单个测试类,一切正常,但是当我在一个包(或所有测试)中运行测试时,由于存在生命周期差异,它们将失败。

  1. 在Spring Boot Test基础结构启动和停止新上下文时,是否可以以某种方式挂接到测试执行并获得回调?

我将得到的最可能的答案是“只需在运行测试时将服务器bean添加到上下文中”。好的,但是这里我面临另一个问题:

  1. 如何确保在与服务器对话的其他bean之前初始化服务器bean? @DependsOn似乎不适合此处,因为我不想在生产中使用带有@DependsOn("testServer")注释的bean

Spring Boot是2.1.6。

0 个答案:

没有答案