V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
seyoatda
V2EX  ›  问与答

Springboot 项目如何正确设计 dao 层的单元测试?

  •  
  •   seyoatda · 2021-01-08 18:13:18 +08:00 · 1848 次点击
    这是一个创建于 1407 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人最近才开始学习单元测试。目前许多博客上都只在讲单测的好处,以及测试框架如 Junit,Mockito 此类的使用。但是很少具体到单元测试的设计。所以有一些困惑:

    1. 如果写针对 dao 层的单元测试,应该测试哪些方面呢? sql 的正确性?参数的边界值?
    2. dao 层测试,需要 mock 数据库吗?如果 mock 了,是否就无法检测 sql 的正确性了?那 dao 层还有测试的必要性吗
    3. 有哪些可以学习关于单元测试编写思路以及设计方法的相关书籍推荐吗?

    谢谢~

    9 条回复    2022-07-18 19:13:44 +08:00
    egglin
        1
    egglin  
       2021-01-08 18:17:58 +08:00
    dao 层我就不 mock 了
    scxiazi
        2
    scxiazi  
       2021-01-08 18:19:17 +08:00
    dao 层我这边是用内存数据库跑
    wysnylc
        3
    wysnylc  
       2021-01-08 18:25:19 +08:00
    黑盒测试
    zoharSoul
        4
    zoharSoul  
       2021-01-08 18:25:37 +08:00
    可以看一下 mybatis 源码里的单元测试
    SuperXRay
        5
    SuperXRay  
       2021-01-08 18:31:13 +08:00
    数据库直接操作,每个测试完毕回滚
    zzzbkl
        6
    zzzbkl  
       2021-01-08 18:56:10 +08:00 via Android
    数据库预置测试数据,单元测试靠 transactional 注解回滚
    个人认为 dao 层单元测试还是有点必要的
    raaaaaar
        7
    raaaaaar  
       2021-01-08 22:56:39 +08:00 via Android
    直接看别人写好的,看别人写了些什么
    seyoatda
        8
    seyoatda  
    OP
       2021-01-10 00:47:14 +08:00
    @egglin
    @scxiazi
    确实我是没有 mock,用的内存数据库进行测试

    @zoharSoul
    @raaaaaar
    看 mybatis 源码是个不错的建议~,谢谢
    seyoatda
        9
    seyoatda  
    OP
       2022-07-18 19:13:44 +08:00
    现在回望现在这个问题,也有了一些自己的理解。虽然在工作中进行 dao 层单测的实践不多。但是总结了这篇文章: https://www.cnblogs.com/JealousSky/p/16491690.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2815 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 13:29 · PVG 21:29 · LAX 05:29 · JFK 08:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.