此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
设置选项
MockMvc 可以通过以下两种方式之一进行设置。
WebApplicationContext
-
指向带有 Spring MVC 和控制器基础设施的 Spring 配置。
- 独立
-
直接指向要测试的控制器,并以编程方式配置 SpringMVC 基础设施。
您应该使用哪个设置选项?
一个WebApplicationContext
基于测试加载您的实际 Spring MVC 配置,从而进行更完整的集成测试。由于 TestContext 框架缓存了loaded Spring 配置,因此它有助于保持测试快速运行,即使您使用相同的配置在测试套件中引入更多测试。此外,您可以覆盖控制器使用的服务@MockitoBean
或@TestBean
继续专注于测试 Web 层。
另一方面,独立测试更接近单元测试。它一次测试一个控制器。您可以手动注入控制器模拟依赖项,并且它不涉及加载 Spring 配置。此类测试更侧重于风格并更容易查看正在测试哪个控制器,是否需要任何特定的 SpringMVC 配置才能工作,等等。独立设置也是一种非常编写临时测试以验证特定行为或调试问题的便捷方法。
与大多数“集成与单元测试”的争论一样,没有对错之分 答。 但是,使用独立测试确实意味着需要额外的集成tests 来验证您的 Spring MVC 配置。或者,您可以编写所有testsWebApplicationContext
,以便它们始终针对您的实际 SpringMVC 配置进行测试。