設定選項

MockMvc 可以透過兩種方式設定。

WebApplicationContext

指向 Spring 組態,其中包含 Spring MVC 和控制器基礎架構。

獨立

直接指向您要測試的控制器,並以程式化方式組態 Spring MVC 基礎架構。

您應該使用哪個設定選項?

基於 WebApplicationContext 的測試會載入您實際的 Spring MVC 組態,從而產生更完整的整合測試。由於 TestContext 框架會快取載入的 Spring 組態,因此即使您在使用相同組態的測試套件中引入更多測試,它也有助於保持測試快速執行。此外,您可以使用 @MockitoBean@TestBean 覆寫控制器使用的服務,以保持專注於測試 Web 層。

另一方面,獨立測試更接近單元測試。它一次測試一個控制器。您可以手動將模擬相依性注入控制器,並且不涉及載入 Spring 組態。此類測試更注重樣式,並且更容易查看正在測試哪個控制器、是否需要任何特定的 Spring MVC 組態才能運作等等。獨立設定也是編寫特設測試以驗證特定行為或偵錯問題的非常方便的方法。

與大多數「整合與單元測試」的爭論一樣,沒有正確或錯誤的答案。但是,使用獨立測試確實意味著需要額外的整合測試來驗證您的 Spring MVC 組態。或者,您可以使用 WebApplicationContext 編寫所有測試,以便它們始終針對您實際的 Spring MVC 組態進行測試。