我使用SpringJUnit4ClassRunner为Spring Boot应用程序运行集成测试。
在搜索过程中,我发现可以使用@DirtiesContext重新加载应用程序上下文。
我的问题:我只需要重新加载安全配置(取决于数据库条目),同时保持其余部分(或者确切地说:我需要按原样保留H2数据库)。
如何仅在JUnit测试之前重新加载安全配置?
答案 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条目。