JUnit使用嵌入式服务器测试Cassandra

bob*_*van 18 testing junit unit-testing cassandra hector

对于将数据保存到nosql数据存储的代码,编写单元测试的最佳方法是什么,在我们的例子中是cassandra?

=>我们使用嵌入式服务器方法使用来自git hub的实用程序(https://github.com/hector-client/hector/blob/master/test/src/main/java/me/prettyprint/hector/testutils/EmbeddedServerHelper .java).但是我一直在看这个问题.1)它将数据保存在多个测试用例中,这使得我们很难确保测试类的测试用例中的数据不同.我尝试在每个测试用例之后调用cleanUp @Ahech,但这似乎并没有清理数据.2)当我们添加更多测试时,我们的内存不足,这可能是因为1,但我还不确定.我目前有1G堆大小来运行我的构建.

=>我一直在想的另一种方法是模拟cassandra存储.但这可能会泄漏cassandra模式中的一些问题,因为我们经常发现上述方法可以解决数据存储到cassandra中的问题.

请让我知道你对此的想法,如果有人使用过EmbeddedServerHelper并且熟悉我提到的问题.


只是一个更新.通过在测试嵌入式服务器使用的cassandra.yaml中将in_memory_compaction_limit_in_mb参数更改为32,我能够解决2)运行构建时用尽java堆空间问题.以下链接帮助我http://www.datastax.com/docs/0.7/configuration/storage_configuration#in-memory-compaction-limit-in-mb.它是64并且在压实期间始终失败.

sbr*_*ges 10

我们使用嵌入式cassandra服务器,我认为这是测试cassandra时最好的方法,嘲笑cassandra API太容易出错.

EmbeddedServerHelper.cleanup() 只是删除文件系统中的文件,但数据可能仍然存在于内存中.

有一种teardown()方法EmbeddedServerHelper,但我不确定它是多么有效,因为cassandra有很多静态单例,其状态不被清理teardown()

我们所做的是我们有一个方法在测试之间调用每个列族上的truncate.这将删除所有数据.


小智 7

我想你可以看看cassandra-unit:https://github.com/jsevellec/cassandra-unit/wiki

  • 请在答案中披露您的联盟.有关此政策,请参阅[FAQ](http://stackoverflow.com/faq#promotion). (7认同)