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

Unit testing 为单元测试启动嵌入式Cassandra实例,unit-testing,testing,cassandra,Unit Testing,Testing,Cassandra,我需要启动一个嵌入式cassandra实例,通过单元测试在cassandra键空间上执行一些操作。编程语言是Java。启动嵌入式cassandra的选项有哪些 我使用了MojoMaven插件,但是在使用以下命令启动实例之后,我没有看到cassandra实例在localhost上的默认端口9042启动。 插件: 要启动的命令:mvn cassandra:run-Dcassandra.nativeTransportPort=9042 在使用方面是否缺少一些东西,或者我是否需要使用不同的东西 谢谢 J

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

我使用了MojoMaven插件,但是在使用以下命令启动实例之后,我没有看到cassandra实例在localhost上的默认端口9042启动。 插件: 要启动的命令:mvn cassandra:run-Dcassandra.nativeTransportPort=9042

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

谢谢 Jyothi

我们用于单元测试。该库提供了有用的帮助,并允许从代码中轻松启动嵌入式Cassandra

EmbeddedCassandraServerHelper.startEmbeddedCassandra();
我们用于单元测试。该库提供了有用的帮助,并允许从代码中轻松启动嵌入式Cassandra

EmbeddedCassandraServerHelper.startEmbeddedCassandra();

这取决于你想测试什么。Cassandra Maven插件(我是其中一个原始作者)和Cassandra单元都做了一些非常相似的事情,它们在JVM中启动Cassandra实例

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

要真正验证上述内容,我建议使用Simularon:

以及一个示例集成:

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

和配置文件切换,用于:

并使用以下配置文件:


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

这取决于您要测试的内容。Cassandra Maven插件(我是其中一个原始作者)和Cassandra单元都做了一些非常相似的事情,它们在JVM中启动Cassandra实例

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

要真正验证上述内容,我建议使用Simularon:

以及一个示例集成:

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

和配置文件切换,用于:

并使用以下配置文件:


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

您还可以看看

e、 g.如果您想使用JUnit4启动Cassandra,只需一行即可:

公共类CassandraRuleTests{
@阶级规则
public static final CassandraRule cassandra=新的CassandraRule(CqlScript.classpath(“init.cql”);
@试验
公共void testMe(){
}
}

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

您还可以查看

e、 g.如果您想使用JUnit4启动Cassandra
,只需一行即可:

公共类CassandraRuleTests{
@阶级规则
public static final CassandraRule cassandra=新的CassandraRule(CqlScript.classpath(“init.cql”);
@试验
公共void testMe(){
}
}

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

您需要向cassandra maven插件提供以下配置,以启动本机传输端口(9042)

true

所以你的插件看起来像

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cassandra-maven-plugin</artifactId>
                <version>3.6</version>
                <configuration>
                    <startNativeTransport>true</startNativeTransport>
                </configuration>
            </plugin>

org.codehaus.mojo
卡桑德拉·马文插件
3.6
符合事实的

您需要为cassandra maven插件提供以下配置,以启动本机传输端口(9042)

true

所以你的插件看起来像

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cassandra-maven-plugin</artifactId>
                <version>3.6</version>
                <configuration>
                    <startNativeTransport>true</startNativeTransport>
                </configuration>
            </plugin>

org.codehaus.mojo
卡桑德拉·马文插件
3.6
符合事实的

然后您可以通过连接到本地主机/9042上的实例来验证这一点吗?通过CQL?是的,我们通过DataStax Java驱动程序会话实例连接并执行CQL查询。然后您可以通过连接到本地主机/9042上的实例来验证这一点吗?通过CQL?是的,我们通过DataStax Java驱动程序会话实例连接并执行CQL查询。我说的是“在JVM中”,但很确定两者也可以/确实派生JVM(我已经很久没有看过了)。无论哪种方式,您都只限于一个实例或非常小的集群,如果您只想剔除一些故障案例,那么就不值得在测试infra上花费额外的开销。tl,dr:使用Sim卡