簡體   English   中英

在 Spring Boot 中,如何在 @WebMvcTest 期間從啟動器啟用 @ControllerAdvice

[英]In Spring Boot, how do I enable a @ControllerAdvice from a starter during a @WebMvcTest

我創建了一個用@ControllerAdvice@ResponseBody注釋的類MyExceptionHandler來處理異常,因為這是 Spring Boot 中的常見做法。

現在我把這個類移到了一個初學者,我包含在幾個項目中,所以它們都使用相同的基本異常處理。 當我正常啟動 Spring Boot 應用程序時,這很好用。

當我執行帶有以下注釋的測試時:

@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
@WebMvcTest(controllers = SomeController.class)

啟動器中的 ControllerAdvice 未激活,因此我無法測試我的錯誤響應。

當我在我的項目中創建MyExceptionHandler的子類並使用@ControllerAdvice@ResponseBody注釋該類時,一切正常。

我如何確保在我的測試過程中,啟動器中的 ControllerAdvice 被激活?

@WebMvcTest(controllers = SomeController.class)

這一行告訴測試具體使用什么。 其他控制器不會添加到上下文中。 @ControllerAdvice是一個@Component因此它可能也沒有添加到上下文中。

您應該刪除此規范,或者也添加要測試的@ControllerAdvice類。

文檔在“控制器”值和“值”值部分討論了這一點。

我找到了更好的方法。 Spring 明確支持 AutoConfigureWebMvc 的自動配置。 您可以向 /META-INF/spring.factories 添加一個鍵:

org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureWebMvc=...

另請參閱此答案: https : //stackoverflow.com/a/60247057/2936509

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM