0

我使用SpringJUnit4ClassRunner爲Spring Boot應用程序運行集成測試。JUnit 4&Spring Boot - 在測試之前選擇性地重新加載上下文/重新加載Spring Security配置

在我的搜索過程中,我發現可以使用@DirtiesContext重新加載應用程序上下文。我只是需要重新加載安全配置(這取決於一個數據庫條目),同時保持其餘(或準確地說:我需要保持H2數據庫的原樣)。

如何僅在JUnit測試之前重新加載安全配置?

回答

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 { ... } 
+0

我正在使用Liquibase,忘了提及。 或者另一種方法:在Spring Boot開始加載應用程序上下文之前,如何將數據(它只是啓動應用程序啓動所需的一條記錄)插入數據庫? –

+1

您可以這樣做:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html,或者您可以使用insert語句編寫SQL腳本並執行它(在測試執行之前,請訪問https://stackoverflow.com/a/1497614/4857050) –

0

我解決了這個問題的另一種方式,我修改了FPGA實現這樣安全配置可以在運行期間可變地修改,並且在啓動時不需要數據庫條目。

相關問題