服务层单元测试是连接数据库测试还是用mock测试?
刚入行没多久,要写单元测试,目前阶段先针对服务层进行测试。
3种方法:
1.用真实数据库测试增删查改,dao层也一起测试了。因为数据库内容随时在变,每次测试前先针对每个测试方法跑一下sql脚本查出结果,再修改单测方法的Assert,然后跑单测。如果有50个单测,就要跑50遍不同sql,修改50个单测方法。如果需要数据,先插入一些数据。(这是我们组长要求的做法。)
2.测试前清空相关表的内容,再插入数据,根据插入的数据进行Assert。这样将dao层也测试到了,不需要每次测试前先跑sql。
3.用mock测试,隔离dao层,根据模拟出来的数据进行Assert判断。这里尽量保证dao层的正确性,如果需要dao层测试,再考虑。
第一种方法,操作繁琐,浪费时间。
第二种方法,在插入数据时需要保证外键的正确性,比第一种方法要好。
第三种,未测试dao层,比较快。
不知道你们的服务层怎么测试的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
引用来自“BoXuan”的评论
我一般做法就是统一接口api入口,而每个业务功能规定一个请求json格式和响应json格式,即一个请求和响应有一个前后端协定的基于json的通信协议。
我一般做法就是统一接口api入口,而每个业务功能规定一个请求json格式和响应json格式,即一个请求和响应有一个前后端协定的基于json的通信协议。
引用来自“BoXuan”的评论
而且做成接口服务的另外的好处就是方便压测,现在微服务架构的局部功能测试都是很方便的,测试部分无需程序人员做,仅需要测试人员按照接口定义的规范写一个请求数据就行了,而且业务逻辑以及数据库方面都能测试到位。按照你这个描述,感觉架构上就是古老级别的,后端包揽了很多前端的工作。
而且做成接口服务的另外的好处就是方便压测,现在微服务架构的局部功能测试都是很方便的,测试部分无需程序人员做,仅需要测试人员按照接口定义的规范写一个请求数据就行了,而且业务逻辑以及数据库方面都能测试到位。按照你这个描述,感觉架构上就是古老级别的,后端包揽了很多前端的工作。
引用来自“BoXuan”的评论
如果做成纯数据接口服务就好做测试了,只需要编写对应的接口请求数据,而不需要编写繁琐的测试代码。
如果做成纯数据接口服务就好做测试了,只需要编写对应的接口请求数据,而不需要编写繁琐的测试代码。