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