当使用 Spring Test MVC 测试 Spring Controller 时,我们当前正在使用 DBUnit 设置数据库,并且我们不会模拟服务方法。
虽然这在一定程度上减慢了我们的测试速度(我们使用嵌入式 H2 数据库),但我们的测试更加干净,无需 stub 方法和创建测试数据构建器/工厂方法。
您对此有何看法?我们会对这种方法感到后悔吗?您能否对替代方法提出任何建议?
最佳答案
我宁愿说,只有在需要测试类或组件独立行为并且模拟功能来自应用程序外部(例如电子邮件服务器)时才应使用模拟。与跨越多个层访问数据库相比,这种行为更加可预测。 有一篇关于此的好文章: http://blog.trifork.com/2012/12/11/properly-testing-spring-mvc-controllers/
但另一方面,当最好避免模拟时,您需要进行集成测试、单元测试、功能测试等。这实际上取决于您真正需要什么。
请同时阅读此内容,对此进行了很好的讨论: Integration test per layer is a good practice?
关于java - 测试 Spring Controller : Invoke service methods or mock results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34715479/