开发时java项目启动时需要连mysql等,有没有什么工具可以mock连接使得启动顺利不报错?
开发时java项目启动时需要连mysql,redis,mongo,rabbitmq等,本机不想安装这么多东西,不在公司时vpn连接测试机器连其上面的mysql, redis, mongo, rabbitmq,有时候有点麻烦,有没有什么工具可以mocker到这些的连接使得启动顺利不报错?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果是非单元测试
mock 一个数据库连接不难,实际上只要 mock 一个 DataSource 对象,然后根据项目实际初始化方式放进去就可以了,而这个对象实际连接到本地的任意数据库即可。下面的例子使用 mybatis 和 H2 数据库:
上面的例子创建的是一个空的数据库,所以如果启动过程中有数据库操作,肯定会失败。因此要么把这些操作从初始化过程中移走,要么在 mock 数据库中创建同样的表等等,让初始化过程顺利完成。
如果是单元测试
在 Spring Boot 的单元测试中,可以用 @MockBean 来隔离很多东西,比如项目中用了一个
Jedis
对象,但是某个单元测试并不需要连接 Redis 服务,那么可以:// 1 这里就是告诉 Spring Boot 创建一个模拟的 Jedis 对象,它不会连接任何服务,这样就省去了下面的麻烦:1) 在本地运行一个真正的 Redis 服务;2)离线开发时修改项目配置指向本地的 Redis 服务,集成测试时又要改回去。
我目前所在公司的环境分为dev,test,sit,pre,prd。不管那个环境都自己完整且独立的的mysql,redis,mq等等,就不存在你说的这个问题了。目前应该没有这种工具吧,反正我是没有见过,这种全能的工具实现起来太难了。
如果真的要用:
如果真的不用:
(PS:这位老哥我已经面熟你了^_^)