我想测试我的SpringBoot应用程序,它使用cassandra作为CrudRepository。我最后
/*
* https://github.com/jsevellec/cassandra-unit/wiki/Spring-for-Cassandra-unit
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ComponentScan
@ContextConfiguration(value = { "classpath:/default-context.xml" })
@TestExecutionListeners({ CassandraUnitTestExecutionListener.class })
@CassandraDataSet(value = { "setupTables.cql" }, keyspace = "keyspaceToCreate")
@CassandraUnit
public class ApplicationTests {
@Autowired
MyCassandraRepository repo;
@Test
public void contextLoads() {
System.out.println(repo.findAll());
}
}使用
<dependency>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit-spring</artifactId>
<version>3.0.0.1</version>
<scope>test</scope>
</dependency>和
CREATE TABLE MY_CASSANDRA_ENTRY (
MY_CASS_STRING varchar PRIMARY KEY
)这导致
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: localhost/127.0.0.1:9142 (com.datastax.driver.core.exceptions.InvalidQueryException: unconfigured table schema_keyspaces))如果我使用旧版本的卡桑德拉-单元弹簧
<dependency>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit-spring</artifactId>
<version>2.1.9.2</version>
<scope>test</scope>
</dependency>它以NullPointerException结尾,因为没有注入repo值。
源https://github.com/StephanPraetsch/spring.boot.cassandra.unit.test
发布于 2016-08-02 18:24:29
CassandraUnit从9142端口开始。Spring默认为端口9042。您需要设置端口和键空间名称,以便Cassandra驱动程序能够获取正确的连接详细信息。
您需要在测试中更改两件事:
@SpringBootTest而不是@EnableAutoConfiguration。这使您在步骤2中需要的配置属性支持等其他几项功能得以实现。src/test/resources/application.properties并设置端口和键空间名称。spring.data.cassandra.port=9142
spring.data.cassandra.keyspace-name=keyspaceToCreate这将配置正确的端口和密钥空间。
或者,可以使用以下方法指定属性
@SpringBootTest({"spring.data.cassandra.port=9142",
"spring.data.cassandra.keyspace-name=keyspaceToCreate"})https://stackoverflow.com/questions/38720737
复制相似问题