【问题标题】:Spring boot test : run tasks before and after all testsSpring Boot 测试:在所有测试之前和之后运行任务
【发布时间】:2019-07-19 09:24:35
【问题描述】:

我想在所有 spring boot 测试之前运行一个任务(比如启动一个 db),并在所有测试运行后关闭 db。

我不想使用@Before 或@BeforeClass,因为这会导致任务在每个测试或测试类之前和之后运行。

我们希望在所有测试/测试类之前和所有测试/测试类之后运行它们

我们在我们的测试类上使用@SpringBootTest 注解。 _

【问题讨论】:

  • 我不知道你会用这个 bd 做什么以及你使用什么样的 db?请尝试提供更多详细信息!
  • 我们想知道如何在所有测试之前和之后运行任务。旋转数据库只是任务的一个示例。
  • 你做了一个超类,你定义你的 init 方法用 @BeforeAll 注释和另一个用 @AfterAll 注释的方法,然后你所有的测试类都扩展了这个超类?
  • 但是我们有很多测试。这将在每个测试类之前和之后运行任务,但我们只想运行一次。我们正在考虑旋转一个数据库 (github.com/wix/wix-embedded-mysql),我们想旋转它并关闭它一次。

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


【解决方案1】:

要在所有测试开始之前执行某些操作,您可以通过在 test-package 中定义一个类并使用 @Configuration 注释来操纵 spring-boot-context 的开始。在那里你可以做自定义逻辑,比如在不同的数据源或其他东西上填充你的DataSourceInitializer

对于所有测试,您可以实现一个 ShutdownHook,也可以在您的测试包中实现,这样当 spring-boot-context 关闭时它将执行您的钩子。

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 2023-04-11
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多