JUnit 4 和 Spring Boot - 在测试前有选择地重新加载上下文/重新加载 Spring 安全配置



我使用 SpringJUnit4ClassRunner 为 Spring Boot 应用程序运行集成测试。

在搜索过程中,我发现可以使用@DirtiesContext重新加载应用程序上下文。

我的问题:我只需要重新加载安全配置(这取决于数据库条目(,同时保持其余部分不变(或者准确地说:我需要保持 H2 数据库不变(。

如何仅在 JUnit 测试之前重新加载安全配置?

如果需要保持 H2 数据库原样,可以考虑将属性spring.jpa.hibernate.ddl-auto设置为update,因为它将创建不存在的数据库,如果存在,它将保持现有数据库。如果您已经有application-test.properties则可以创建其他属性,例如application-securityTest.properties

#... Your DB connection info
spring.jpa.hibernate.ddl-auto=update

然后在测试类中,您需要使用注释@ActiveProfiles激活此配置文件,并使用@DirtiesContext重新加载 Spring 上下文:

@ActiveProfiles("securityTest")
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
public class SecurityTest { ... }

我以另一种方式解决了这个问题,我修改了实现,以便可以在运行时可变地修改安全配置,并且在启动时不需要数据库条目。

最新更新