设置选项

MockMvc 可以通过两种方式进行设置。

WebApplicationContext

指向包含 Spring MVC 和控制器基础设施的 Spring 配置。

Standalone

直接指向您要测试的控制器,并以编程方式配置 Spring MVC 基础设施。

您应该使用哪种设置选项?

基于 WebApplicationContext 的测试会加载您实际的 Spring MVC 配置,从而实现更完整的集成测试。由于 TestContext 框架会缓存加载的 Spring 配置,因此即使您在测试套件中引入更多使用相同配置的测试,它也有助于保持测试运行速度。此外,您可以使用 @MockitoBean@TestBean 覆盖控制器使用的服务,从而专注于测试 Web 层。

另一方面,独立测试更接近于单元测试。它一次测试一个控制器。您可以手动将模拟依赖项注入控制器,并且它不涉及加载 Spring 配置。此类测试更侧重于样式,并且更容易查看正在测试哪个控制器、是否需要任何特定的 Spring MVC 配置才能工作等等。独立设置也是编写临时测试以验证特定行为或调试问题的便捷方式。

与大多数“集成测试与单元测试”的争论一样,没有正确或错误的答案。但是,使用独立测试确实意味着需要额外的集成测试来验证您的 Spring MVC 配置。或者,您可以使用 WebApplicationContext 编写所有测试,以便它们始终针对您实际的 Spring MVC 配置进行测试。