如何在spring boot中的每个测试类之后销毁和重新创建bean

Posted

技术标签:

【中文标题】如何在spring boot中的每个测试类之后销毁和重新创建bean【英文标题】:How to destroy and recreate bean after each test class in spring boot 【发布时间】:2017-04-19 20:45:56 【问题描述】:

我有一个应用程序,我创建 bean A 来安排配置中定义的任务,但在测试中我想在每个测试类之前创建它 bean 并在每个类之后销毁。

我需要它,因为我更新了每个类中的属性,例如:

@TestPropertySource(properties = ["my.property=valueForTest"])

在 JUnit/Spring 中可以吗?

【问题讨论】:

【参考方案1】:

我知道只有通过@DirtiesContext 丢弃整个上下文的选项。这显然也会丢掉你的豆子。

【讨论】:

@DirtiesContext 在这种情况下应该没问题,因为原始发布者无论如何都会为每个测试类创建一个全新的ApplicationContext(由于使用了@TestPropertySource)。 虽然我必须指出,为每个测试类创建一个新的ApplicationContext 实际上通常是最糟糕的做法

以上是关于如何在spring boot中的每个测试类之后销毁和重新创建bean的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot实战笔记-- Spring常用配置(Bean的初始化和销毁Profile)

如何创建 Spring Boot 测试套件

如何在 spring-boot 中的微服务中创建 Super/Base/Parent 类 - 在子类中扩展该类

如何在 Spring-boot 中不模拟服务类的情况下为 REST 控制器端点编写单元测试

如何在 Junit5 / spring boot 中命令执行控制器测试类?

如何在 Spring Boot 应用程序中为带有 @Configuration 注释的类编写单元测试用例