[英]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.