gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:40:10 25 4
gpt4 key购买 nike

为将数据保存到 nosql 数据存储(在我们的案例中为 cassandra)的代码编写单元测试的最佳方法是什么?

=> 我们正在使用嵌入式服务器方法,使用来自 git hub (https://github.com/hector-client/hector/blob/master/test/src/main/java/me/prettyprint/hector/testutils/EmbeddedServerHelper.java) 的实用程序。但是我一直看到一些问题。 1)它在多个测试用例中持久化数据,使我们很难确保数据在测试类的测试用例中是不同的。我尝试在每个测试用例之后调用 cleanUp @After,但这似乎并没有清理数据。 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,并且在压缩过程中开始持续失败。

最佳答案

我们使用嵌入式 cassandra 服务器,我认为这是测试 cassandra 的最佳方法,模拟 cassandra API 太容易出错。

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

EmbeddedServerHelper 中有一个 teardown() 方法,但我不确定它的效果如何,因为 cassandra 有很多状态未清除的静态单例通过 teardown()

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

关于unit-testing - JUnit 使用嵌入式服务器测试 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6612104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com