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

2021-01-08 18:13:18 +08:00
 seyoatda

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

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

谢谢~

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

@zoharSoul
@raaaaaar
看 mybatis 源码是个不错的建议~,谢谢
seyoatda
2022-07-18 19:13:44 +08:00
现在回望现在这个问题,也有了一些自己的理解。虽然在工作中进行 dao 层单测的实践不多。但是总结了这篇文章: https://www.cnblogs.com/JealousSky/p/16491690.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/743114

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX