设置选项
MockMvc 可以通过两种方式进行设置。
WebApplicationContext-
指向包含 Spring MVC 和控制器基础设施的 Spring 配置。
- Standalone(独立)
-
直接指向您要测试的控制器并以编程方式配置 Spring MVC 基础设施。
您应该使用哪种设置选项?
基于 WebApplicationContext 的测试会加载您实际的 Spring MVC 配置,从而产生更完整的集成测试。由于 TestContext 框架会缓存加载的 Spring 配置,这有助于使测试运行速度快,即使您在测试套件中引入更多使用相同配置的测试也是如此。此外,您可以使用 @MockitoBean 或 @TestBean 覆盖控制器使用的服务,以便专注于测试 Web 层。
另一方面,独立测试更接近于单元测试。它一次测试一个控制器。您可以手动将模拟依赖项注入控制器,并且不涉及加载 Spring 配置。此类测试更注重风格,更容易看出正在测试哪个控制器,是否需要任何特定的 Spring MVC 配置才能工作,等等。独立设置也是编写临时测试以验证特定行为或调试问题的非常方便的方式。
与大多数“集成测试与单元测试”的争论一样,没有正确或错误的答案。但是,使用独立测试确实意味着需要额外的集成测试来验证您的 Spring MVC 配置。或者,您可以使用 WebApplicationContext 编写所有测试,以便它们始终针对您实际的 Spring MVC 配置进行测试。