代码之家  ›  专栏  ›  技术社区  ›  Roman Puchkovskiy

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

  •  1
  • Roman Puchkovskiy  · 技术社区  · 7 年前

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

    我试过的第一件事就是用JUnit4的 @ClassRule 启动/停止服务器,但Spring Boot是智能的,可以跨测试类重用上下文。所以对于一个测试类来说,一切都很好,但是当我在一个包中运行测试(或者所有测试)时,它们会因为生命周期的不同而失败。

    1. 当Spring Boot测试基础设施启动和停止一个新的上下文时,是否有可能以某种方式钩住测试执行并获得回调?

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

    1. 如何确保在其他与服务器通信的bean之前初始化服务器bean? @DependsOn 似乎不适合这里,因为我不想在生产中使用 @DependsOn("testServer")

    弹簧靴是2.1.6。

    0 回复  |  直到 7 年前