Spring Boot Data嵌入式Cassandra

ale*_*oid 6 spring cassandra spring-boot spring-data-cassandra

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

我添加了以下Maven依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

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

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

wal*_*alv 8

我们在项目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 {
Run Code Online (Sandbox Code Playgroud)

b)在你的src/test/resources/application.properties中,添加它(请注意,嵌入式cassandra在端口9142上启动,但在默认情况下不是9042)

spring.data.cassandra.port=9142
spring.data.cassandra.keyspace-name=local_test
Run Code Online (Sandbox Code Playgroud)

c)在src/test/resources中创建空文件bootstrap_test.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>
Run Code Online (Sandbox Code Playgroud)

这应该足以使用Embedded Cassandra运行测试.希望能帮助到你.

  • 你这里的数据集是哪个?我收到一个错误:12:28:49.883 [main] ERROR org.springframework.test.context.TestContextManager - 允许 TestExecutionListener [org.cassandraunit.spring.CassandraUnitDependencyInjectionTestExecutionListener@1ebea008] 准备测试实例 [net.gueka] 时捕获异常.user.service.UserServiceTest@38e7ed69] org.cassandraunit.dataset.ParseException:未找到数据集 (2认同)
  • 为什么我们需要两个具有相同artifactId和不同作用域的依赖项? (2认同)