JUnit 4& Spring Boot - 在测试之前有选择地重新加载上下文/重新加载Spring Security配置

时间:2017-08-01 15:12:18

标签: spring-boot junit spring-security junit4 applicationcontext

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

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

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

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

2 个答案:

答案 0 :(得分:1)

如果您需要保留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 { ... }

答案 1 :(得分:0)

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