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