当前位置: 首页 > 知识库问答 >
问题:

为单元测试启动嵌入式Cassandra实例

元胡媚
2023-03-14

我需要启动一个嵌入式cassandra实例,通过单元测试在cassandra键空间上执行一些操作。编程语言是Java。启动嵌入式cassandra有哪些选项?

我使用了mojo maven插件,但是在使用以下命令启动实例之后,我没有看到cassandra实例在localhost上的默认端口9042启动。插件:http://www.mojohaus.org/cassandra-maven-plugin/usage.html要启动的命令:mvn cassandra:run-Dcassandra。nativeTransportPort=9042

在使用方面是否缺少一些东西,或者我是否需要使用不同的东西?

谢谢Jyothi

共有3个答案

夏华藏
2023-03-14

你也可以看看https://github.com/nosan/embedded-cassandra/wiki

e、 g.如果要使用JUnit4启动Cassandra,可以在一行中完成:

public class CassandraRuleTests {

    @ClassRule
    public static final CassandraRule cassandra = new CassandraRule(CqlScript.classpath("init.cql"));

    @Test
    public void testMe() {

    }

}

卡桑德拉将作为一个单独的过程进行分叉。如果使用JAVA 9及更高版本,还可以通过属性将路径设置为JAVA\u HOME 8。

苏乐
2023-03-14

我们使用Cassandra单元进行单元测试。该库提供了有用的帮助程序,并允许非常轻松地从代码启动嵌入式Cassandra

EmbeddedCassandraServerHelper.startEmbeddedCassandra();
闾丘康安
2023-03-14

这取决于您尝试测试的内容。Cassandra Maven Plugin(我是其中的原始作者之一)和Cassandra Unit都做了一些非常相似的事情,因为它们启动了Cassandra的JVM内实例

如果您只想在集成测试中执行一些CRUD测试,那么这非常有用,但如果您想测试一致性级别故障和在各种故障情况下重试(尤其是对于多个数据中心)之类的场景,那么这确实没有帮助。在这一点上,Cassandra只是一只野兽,所以这意味着您需要大量内存才能运行测试。

要真正验证上述内容,我建议使用Simulacron:https://github.com/datastax/simulacron/blob/master/doc/java_api/README.md

和一个集成示例:https://github.com/datastax/java-driver/blob/9f0d89799a8a1e4cd1022dd7c43333924c36a648/integration-tests/src/test/java/com/datastax/oss/driver/api/core/ProtocolVersionMixedClusterIT.java

这就是驱动团队用来测试行为场景的方法,尽管他们仍然依赖CCM测试桥(也是一个选项)来测试很多拦阻和铲断的内容。对于这两种情况,在该项目中引入maven的方式应该作为最佳实践的一个例子:

https://github.com/datastax/java-driver/blob/3.x/pom.xml#L749-L816

和配置文件切换:https://github.com/datastax/java-driver/blob/3.x/pom.xml#L925-L947年

并使用配置文件:https://github.com/datastax/java-driver/blob/3.x/driver-core/src/test/java/com/datastax/driver/core/PreparedStatementTest.java#L146

为了让你真正了解它,我建议你把驱动程序项目拉下来,把它拆开,看看它们是如何组合在一起的。可能最大的胜利是整个项目不依赖于Cassandra代码。

 类似资料:
  • 所以我用了这个嵌入Kafka的例子,还有这个 我对这个示例做了一点更改,并用一些数据库(如h2db)更新了kafka侦听器。 现在在我的单元测试中,当我想检查数据在数据库中是否可用时,我得到NULL。另外,我不确定如何手动检查数据库,因为h2是一个内存基础数据库。 这是更新的部分:在接收器类中 在单元测试中: 但 dt 始终为空。此外,我也无法检查数据库,因为它在测试停止后停止。有人知道如何使它可

  • 我对嵌入式Cassandra的Spring单元测试有意见。问题是嵌入式Cassandra和我的Cassandra服务器同时启动。如何确保在单元测试期间只启动嵌入式Cassandra。 我正在为Cassandra使用Spring数据。 我有以下Spring配置文件。 我的上下文文件 我的测试用例如下: }

  • 我正在使用kafka在spring boot中开发一个异步邮件服务器。 我已经用嵌入式Kafka编写了测试,它在一个随机端口中启动自己的Kafka主题,并使用它进行测试。 当我开始这个应用程序上下文正在加载,它期望在我的本地kafka集群。我需要停止应用程序上下文的加载。我从https://github.com/code-not-found/spring-kafka/blob/master/spr

  • 问题内容: 我正在尝试在内存模式下使用hsqldb创建集成测试。目前,我必须在运行单元测试之前从命令行启动hsqldb服务器。我希望能够通过集成测试来控制hsqldb服务器。我似乎无法通过代码解决所有问题。 更新: 这似乎与在类路径中包含hibernate.cfg.xml文件一起使用: 并在我的hibernate.cfg.xml文件中: 更新 看来,这仅是在使用jUnit和内置测试运行器从Ecli

  • 在我的一个集成测试中,我似乎遇到了一个棘手的问题。我有一个基于Spring Boot/Spring MVC的REST服务器和一个Cassandra DB。我使用spring数据cassandra jar文件,通过一个CrudRepository实现,通过CassandraTemplate将POJO插入到DB中。应用程序运行良好,我可以进行REST调用,框架可以将我的表单数据正确地转换为POJO,并