我试图测试一个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填充的。有人能帮我解决这个问题吗?
1条答案
按热度按时间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脚本。
希望对你有用。