V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kid1412621
V2EX  ›  DevOps

Web 项目单元测试具体实践的理解

  •  
  •   kid1412621 · 2019-10-10 16:47:35 +08:00 · 3804 次点击
    这是一个创建于 1651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以 Spring 项目为例,谈下自己对单元测试具体实践的理解,还不知道对不对,希望大家结合下自己经验指点下。 由于 Web 项目一般分层是:dao,service 和 controller。相应 UT 也映射这种结构,具体为:

    • dao:验证 sql 的正确性。这里我看 github 上那个样例库是做了事务的验证,但事务不应该是在服务层吗?所以我觉得事务的验证是看你在哪一层做的。为了将 UT 和外系统解藕(应用和数据库视作不同系统),数据使用 in-memory DB (如:h2 ),这样能保证测试的独立性和高效。至于 in-memory DB 和实际数据库的行为差异,能否理解为默认被 JDBC 屏蔽了?即视作没有差异。
    • service:验证业务逻辑。为了将不同分层间的隔离(提高效率),用 Mock 框架来模拟 dao 层,以使 dao 和 service 解藕。
    • controller:主要验证参数验证,路由处理,和返回字段的准确性。

    每层的验证都是基于下层验证的正确性,并仅专注于本层的测试,每层之间通过 mock 框架来解藕。

    参考链接:

    有赞分层自动化测试实践

    A Github demo repo

    Spring Boot Testing

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3769 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:28 · PVG 12:28 · LAX 21:28 · JFK 00:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.