boot中使用嵌入式cassandra进行单元测试

ddhy6vgd  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(354)

我试图测试一个spring启动应用程序,其中包括保存到cassandradb中。对于单元测试,我使用了embeddedcassandra。
这些是依赖关系。

compile group: "com.datastax.cassandra", name: "cassandra-driver-core", version:"2.1.7"
    compile group: "com.datastax.cassandra", name: "cassandra-driver-dse", version:"2.1.7"
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile  ("org.cassandraunit:cassandra-unit-spring:2.1.9.2"){
        exclude group:"org.cassandraunit",module:"cassandra-unit"
    }

这些是我用过的注解

@RunWith(SpringRunner.class)
@WebMvcTest(value = MyController.class)
@Import(value = {MyDao.class})
@ContextConfiguration
@TestExecutionListeners(listeners = {
        CassandraUnitDependencyInjectionTestExecutionListener.class,
        CassandraUnitTestExecutionListener.class,
        ServletTestExecutionListener.class,
        DependencyInjectionTestExecutionListener.class,
        DirtiesContextTestExecutionListener.class}
)
@EmbeddedCassandra(timeout = 60000)
@CassandraDataSet(keyspace = "test", value = {"test.cql"})

但是单元测试中保存的值是由原来的cassandradb填充的。有人能帮我解决这个问题吗?

5fjcxozz

5fjcxozz1#

cassandra单元使用:native\u transport\u port:9142,但spring boot需要9042端口,因此您应该在配置中更改端口或使用cassandra.yaml文件。你也可以看看这个:
https://github.com/nosan/embedded-cassandra/blob/master/readme.adoc#spring-后备箱
它还提供@cql注解,以便在每次测试之前或之后执行cql脚本。
希望对你有用。

相关问题