单元测试解耦数据库 - 依赖注入和 Mockito

基本背景

团队开发任务中涉及一个移动应用的 Java 后端,以增删查改 (CRUD) 为主,附加一些其他的服务逻辑。系统的持久层是用一些以 DAO 做名字结尾的类构成的。每一个 DAO 里面实现了增删查改的具体实现,一般模式是获得一个 Hibernate Session,运行 SQL Query,再把结果组织一下返回给客户端。

由于 DAO 类的这种开发模式,运行 JUnit 单元测试的时候需要环境中有一个配置好的 MySQL 实例,这极大限制了代码包持续构建的能力。

代码的持续构建对于开发效率来说是非常重要的。比较理想的情况是开发者每提交一次 commit, 代码托管平台上能够自动构建一下,并运行单元测试来保证基本逻辑不出问题。这样代码审阅者可以在知道测试通过的前提下来阅读代码,可以节省自己下载代码、测试的手工步骤。

还有是部署前的构建也希望能有一些测试来验证。为了节约网络传输成本,我们在生产环境构建新版本的代码包,而由于这些测试对数据库的依赖,构建的时候如果运行单元测试,有可能对生产服务器上的数据造成污染,所以我们选择了不进行部署前的单元测试。

问题描述

我们希望做到

  1. 代码托管平台可以自动构建每一个上传的 commit
  2. 部署之前能够稳定、安全地运行一些测试

第一个目标有赖于具体托管平台的工具,这篇博文不具体讨论这些工具的使用情况。更容易解决的是第二个问题,如果保证了运行单元测试的时候和数据库实例解耦,就不用担心污染生产数据的问题了。当然还有一个解决方法是在其他环境构建好代码包,然后通过网络传输到生产服务器,但由于网络带宽有限,从开发机上传代码包需要几十分钟,所以在生产服务器上构建是尝试过的效率比较高的方法了。

于是为了实现

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值