我正在评估使用每种方法的好处和缺点。
首先,我不确定是否可以将嘲笑mvcvc视为真正的集成测试,因为它模拟了内部依赖性。
即使我在测试中使用带有真实请求的实际实例,我仍然在模拟我的外部依赖关系,而且我不太确定真正的集成/验证测试的目的就是像真实环境那样测试环境
此外,对该控制器进行测试以使我的管道变长和变慢,因为在不必要的包装等之后它将被中断。
您认为在构建过程中优化这些工具的合适方案是什么?
我的一个想法是尝试像2个配置文件一样使用它: -Profile测试将在测试阶段以模拟的外部依赖关系执行所有IT测试 -配置文件集成将在验证时执行具有实际产品配置的所有IT测试 但是测试是一样的。
答案 0 :(得分:1)
根据我的个人经验,我们一直处于同样的困境中。我们最终使用了两种类型的测试: -由surefire插件管理的单元测试 -由故障安全插件管理的集成测试。 两者都在构建过程中运行(但是当然是在不同的阶段)
现在,关于控制器测试:
我认为单元测试应该很快完成,数十或数百个单元测试应在1秒内运行,因此它们也不应具有外部依赖性,并且应在内存中运行(无套接字,网络,数据库等)。 例如,为了确保小的重构不会破坏某些内容,程序员应该在开发过程中的任何时间(可能在一分钟内进行5次)运行这些测试。
另一方面,控制器测试运行整个弹簧过程,按照定义,这并不是那么快。至于外部依赖关系,根据模拟MVC的配置,您甚至可以运行某种内部服务器来满足请求,因此它(IMO)远非单元测试。 因此,我们决定使用故障保护插件运行它们并进行集成测试。
当然,如果配置正确使用,Spring可以在两次测试之间缓存它们,但这实际上只能帮助并使集成测试运行得更快,但这并不意味着这种测试是单元测试。 / p>