V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
seyoatda
V2EX  ›  问与答

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

  •  
  •   seyoatda · Jan 8, 2021 · 2768 views
    This topic created in 1948 days ago, the information mentioned may be changed or developed.

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

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

    谢谢~

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

    @zoharSoul
    @raaaaaar
    看 mybatis 源码是个不错的建议~,谢谢
    seyoatda
        9
    seyoatda  
    OP
       Jul 18, 2022
    现在回望现在这个问题,也有了一些自己的理解。虽然在工作中进行 dao 层单测的实践不多。但是总结了这篇文章: https://www.cnblogs.com/JealousSky/p/16491690.html
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   963 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 704ms · UTC 22:45 · PVG 06:45 · LAX 15:45 · JFK 18:45
    ♥ Do have faith in what you're doing.