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

Spring Boot数据嵌入Cassandra

宋唯
2023-03-14

在我的Spring Boot 1.5.1应用程序中,我将为Cassandra相关逻辑编写单元/集成测试。

添加了以下Maven依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>

默认的Spring Boot Cassandra配置将连接到真正的Cassandra DB服务器。

在Spring/Spring Boot中是否有任何选项可以将我的测试配置为使用嵌入式Cassandra服务器?如果是这样,请显示所需的配置。

共有3个答案

戚弘和
2023-03-14

我知道这是一个老话题,但有两种方法可以将嵌入式Cassandra与Spring结合使用。

我创建了一个示例应用程序,您可以查看以下Github存储库。

注意:嵌入式服务器在9142端口上启动,而不是在9042端口上!!!

步骤1:

将以下maven插件添加到pom.xml

            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cassandra-maven-plugin</artifactId>
                <version>3.6</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>start</goal>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <startNativeTransport>true</startNativeTransport>
                </configuration>
            </plugin>

第二步:

在项目的根级别创建cassandra/cql目录。嵌入式Cassandra服务器将从此目录初始化数据库

重要提示:此目录中的所有文件都是。cql文件。

示例:cassandra/cql/load。cql公司

步骤3:

创建集成测试。

重要提示:只有带有IT后缀的测试类才被Surfre插件解释为集成测试。

步骤4:

mvn验证以运行集成测试

上官和惬
2023-03-14

Spring Boot中没有嵌入式Apache Cassandra支持,也没有计划。一方面,对嵌入式Apache Cassandra的需求很少,另一方面,Apache Cassandra具有许多与Boot的其他依赖项冲突的依赖项。

看看卡珊德拉单位。

在使用JUnit测试时,您还可以构建自己的测试规则,从而完全控制Apache Cassandra版本、运行时行为等。看看一个可能的实现:CassandraRule。JAVA

白芷阳
2023-03-14

我们在Cassandra Spring Boot项目中使用。以下是对我们有效的步骤:

a) 像这样配置您的测试

import org.cassandraunit.spring.CassandraDataSet;
import org.cassandraunit.spring.CassandraUnitDependencyInjectionTestExecutionListener;
import org.cassandraunit.spring.CassandraUnitTestExecutionListener;
import org.cassandraunit.spring.EmbeddedCassandra;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestConfiguration.class)
@TestExecutionListeners(listeners = {
    CassandraUnitDependencyInjectionTestExecutionListener.class,
    CassandraUnitTestExecutionListener.class,
    ServletTestExecutionListener.class,
    DependencyInjectionTestExecutionListener.class,
    DirtiesContextTestExecutionListener.class
})
@EmbeddedCassandra(timeout = 60000)
@CassandraDataSet(value = {"bootstrap_test.cql"}, keyspace = "local_test")
public abstract class BaseTest {

b)在您的src/test/资源/application.properties中,添加这个(请注意,嵌入式cassandra从端口9142开始,但不是在默认9042上)

spring.data.cassandra.port=9142
spring.data.cassandra.keyspace-name=local_test

c) 创建空文件bootstrap\u test。src/测试/资源中的cql

d) 添加到您的pom。xml

    <dependency>
        <groupId>org.cassandraunit</groupId>
        <artifactId>cassandra-unit-spring</artifactId>
        <version>${cassandra-unit.version}</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.cassandraunit</groupId>
                <artifactId>cassandra-unit</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.cassandraunit</groupId>
        <artifactId>cassandra-unit-spring</artifactId>
        <version>${cassandra-unit.version}</version>
    </dependency>

这应该足以使用嵌入式Cassandra运行测试。希望有帮助。

 类似资料:
  • 我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?

  • 我正在构建一个将使用neo4j的web应用程序。我将在Java构建一个REST API,它将使用Neo4j嵌入式版本。这个架构有什么问题吗? 用别的方法好吗?Neo4j服务器? 谢谢!

  • 我在我的SpringBoot应用程序中使用下面提到的属性,在文件中让LDAP代码在我的本地机器上运行。 我想同时拥有我的嵌入式配置

  • 在学习教程的同时,我正在使用SPRING初始化器https://start.spring.io/使用springboot 2.0.2生成带有reactiveMongoDB的项目。 gradle文件列出:compile('org.springframework.boot:spring-boot-starter-data-mongodb-reactive') 我能够将该项目导入eclipse,主类使用

  • 问题内容: 我有一个使用SQLite的C ++程序。我想将SQL查询存储在一个单独的文件中-纯文本文件, 而不是 源代码文件- 但要将该文件像资源一样嵌入到可执行文件中。 (它必须在Linux上运行,因此就我所知,我无法将其存储为实际资源,尽管如果是Windows,那将是完美的。) 有什么简单的方法可以做到这一点,还是有效地要求我为Linux编写自己的资源系统?(很容易,但是会花费更长的时间。)

  • 我有一个Spring Boot和嵌入式Mongo DB的项目,我也想查找存储在那里的数据。我学习了本教程https://springframework.guru/spring-boot-with-embedd-mongoDB/