【问题标题】:Testing Spring Controllers : Invoke service methods or mock results [closed]测试 Spring 控制器:调用服务方法或模拟结果 [关闭]
【发布时间】:2016-01-11 06:35:36
【问题描述】:

在使用 Spring Test MVC 测试 Spring Controller 时,我们目前正在使用 DBUnit 设置数据库,并且我们不会模拟服务方法。

虽然这在一定程度上减慢了我们的测试速度(我们使用嵌入式 H2 数据库),但我们的测试更加简洁,无需存根方法和创建测试数据构建器/工厂方法。

您对此有何看法?我们是否会后悔这种方法,您能否就替代方法提出任何建议?

【问题讨论】:

    标签: java spring unit-testing spring-mvc


    【解决方案1】:

    我宁愿说,只有在需要测试类或组件的独立行为并且模拟功能从应用程序外部(例如电子邮件服务器)进入生产环境时才应该使用 Mocking。与跨多个层访问数据库相比,这种行为更容易预测。 这方面有一篇很好的文章: http://blog.trifork.com/2012/12/11/properly-testing-spring-mvc-controllers/

    但另一方面,您有集成测试、单元、功能等,最好避免使用 Mocks。这真的取决于你真正需要什么。

    也请阅读这个,有一个很好的讨论: Integration test per layer is a good practice?

    【讨论】:

    • 谢谢,我认为由于我们的控制器调用的服务不是远程调用,我将让控制器执行服务调用并将它们标记为集成测试。我认为只有在确实需要时我们才会推出 Mockito。
    猜你喜欢
    • 2016-08-18
    • 2013-04-16
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2018-12-22
    • 2014-10-11
    相关资源
    最近更新 更多