java - 测试 Spring Controller : Invoke service methods or mock results

标签 java spring unit-testing spring-mvc

当使用 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/

相关文章:

java - Eclipse WST 打开新的 XML 向导抛出 java.lang.NullPointerException

java - 如何在java中为外部程序调用指定参数编码

java - 可以使用 RSA 加密的数据量有多少限制?

java - 如何找到 Hibernate + Spring-JPA 的兼容版本对? (无法打开 JPA EntityManager 进行交易)

javascript - 在 Webstorm 11 中使用 jasmine 运行/调试 node.js 测试用例

java - 为什么这个 Mockito 测试失败了?

java - 如何在 JSF 页面中正确声明一个对象存在于具有给定类型的 session 对象中?

java - Spring http 调用程序,bean 范围不被尊重?

java - 在spring中以编程方式获取JNDI资源

c# - Moq设置方法返回值