标签:mapper 测试 h2 DAO 单元测试 单测 应该 public
应该测试 DAO 层吗?
网上有很多人讨论单元测试是否应该包含 DAO 层的测试。笔者觉得,对于一些主要是crud的业务来说,service层和controller层都会非常薄,而主要的逻辑都落在mapper上。这时候对service层和controller层写单测没有太多意义。可以只写mapper层的单测。
另一方面,mapper层的测试可以有效地避免一些低级的sql错误。
定义单测
单元测试是只针对一个单元的测试,比如说,一个 Service 类的一个每个公共函数。而这个函数所有调用了外部依赖的地方都需要被隔离,比如说外部类的依赖,或者是请求了某个服务器。
也就是说单元测试仅仅是测试当前类的某个函数本身的逻辑,而不涉及到外部的逻辑。因此执行单测应该是很快速的。
在 Java 中单测常用的依赖主要分为测试框架与 Mock 框架。测试框架就是执行和管理测试方法的框架,一般用 JUnit。而 Mock 框架就是用于模拟外部依赖,将被测试的函数的所有外部依赖全部隔离。
一些误区
在网上见到太多的单测教程,写得一塌糊涂。甚至连单测的概念都搞不清楚就发表文章,真的是误人子弟。
关于常见的误区,这篇博客列举得很到位: 如何写好单元测试:Mock 脱离数据库+不使用@SpringBootTest
最关键的一点是不要使用 @SpringBootTest(classes=XXXApplication.class)
注解测试类。这样会直接启动一个 springboot 进程,对稍微复杂一点的项目就至少要花 1 分钟以上来运行了。如果项目使用了远程配置中心,SOA 等中间件,那建议出去泡杯茶
标签:mapper,测试,h2,DAO,单元测试,单测,应该,public 来源: https://www.cnblogs.com/JealousSky/p/16491690.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。