场景
java比如在web开发的场景中,总是离不开写单元测试,但是单元测试需要依赖数据库查询数据,如果只使用最基本的单机mysql,可以在本地使用嵌入式的db来mock,但是上了微服务之后,这些服务怎么mock也是一件难事。最终解决方案:这些都可以使用mock服务来解决。
单元测试开发过程
1.使用mock工具mockito和powermock
工具使用推荐:https://blog.youkuaiyun.com/Mint6/article/details/114044113
mock进阶教程:https://blog.youkuaiyun.com/Mint6/article/details/93490063
2.生成单元测试的基本内容
写单元测试的过程,建立单元测试test类,对每个方法都建立对应的test方法,如果方法多的话,这样也是个无脑力参与的重复手工劳动,我们需要解决掉。
在idea中的插件市场下载:JUnitGenerateV2.0
然后在新开发的类中右键,选择junit test,就会帮你在对应的test目录下生成test类,对应的方法也生成好了
3.生成单元测试类内容
经过第二步的话,单元测试的基本框架都生成了,那么可以写单元测试的内容,写着写着你会发现,使用mock的方法最单元测试,写的单元测试逻辑,也是个重复的劳动,其实这部分完全可以使用代码生成。
在idea插件市场下载插件-squaretest
安装完后idea这里会出现一个入口
在测试类中使用generate test methods,可以帮你初始化大部分单元测试逻辑。
不过这个可以生成大部分的,但是逻辑还需要自己稍微改改的,可以减少很多工作量,但是无法完全代替。
4.查看单元测试覆盖率
使用jacoco插件
最后
到这里就结束了,从怎么mock接口依赖的服务,怎么创建单元测试,怎么初始化简单的单元测试,怎么测试单元测试覆盖率都讲完了,整个四步完成了单元测试的闭环。