使用Redis进行集成测试

Der*_*gan 14 java integration-testing redis jedis playframework-1.x

我在Jedis库的帮助下开始在我的项目中使用Redis.一切正常,但现在我遇到了一个问题,我的功能测试要求Redis在我的持续集成中要避免.做这个的最好方式是什么?

小智 17

我为Java实现了一个简单的redis嵌入式运行器:https: //github.com/kstyrc/embedded-redis

目前,它使用redis 2.6.14 for*nix和https://github.com/MSOpenTech/redis for Windows.但是,您可以使用RedisServer类来运行自己的运行脚本.

我计划扩展实现以支持RedisConf(bind,slaveof,port,dbfilename等).在此之后,我会将jar上传到clojars for mvn deps.


efa*_*fan 8

以下是功能/集成测试的几个选项:

  1. 只需在CI服务器上启动redis实例.所有测试都将负责在执行后进行适当的清理.
  2. 尝试以某种方式控制redis进程,即在CI服务器上有一些shell脚本或作业,以在运行测试之前/之后启动/停止它.至少一些设置/清理的负担从测试中删除,因为对于每个独立的构建,您将具有独立的redis设置.
  3. 通过使用一些内存解决方案进一步控制redis,就像你提到的cassandra(如果它存在的话).

有一点需要提及的是,集成测试不应取代单元测试.单元测试应该是首选,它们可以涵盖更多情况,而集成测试可以用于检查应用程序的所有部分是否可以很好地协同工作.而且我认为这就是为什么很多人选择选择第一选项的原因.

这是一个关于mongodb的类似问题答案有一个链接到项目,它适用于第二个选项(控制mongodb进程)如果你在项目页面上关注一些相关的链接,那么还有一个叫做nosql-unit的东西.我认为这个试图涵盖选项三.我没有使用它,但看起来它也有redis的东西.