首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SpringBoot:卡桑德拉的单元测试

SpringBoot:卡桑德拉的单元测试
EN

Stack Overflow用户
提问于 2016-08-02 12:42:47
回答 1查看 7.9K关注 0票数 4

我想测试我的SpringBoot应用程序,它使用cassandra作为CrudRepository。我最后

代码语言:javascript
运行
复制
/*
 * 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());

    }

}

使用

代码语言:javascript
运行
复制
    <dependency>
        <groupId>org.cassandraunit</groupId>
        <artifactId>cassandra-unit-spring</artifactId>
        <version>3.0.0.1</version>
        <scope>test</scope>
    </dependency>

代码语言:javascript
运行
复制
CREATE TABLE MY_CASSANDRA_ENTRY (
  MY_CASS_STRING varchar PRIMARY KEY
)

这导致

代码语言:javascript
运行
复制
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))

如果我使用旧版本的卡桑德拉-单元弹簧

代码语言:javascript
运行
复制
    <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

EN

回答 1

Stack Overflow用户

发布于 2016-08-02 18:24:29

CassandraUnit从9142端口开始。Spring默认为端口9042。您需要设置端口和键空间名称,以便Cassandra驱动程序能够获取正确的连接详细信息。

您需要在测试中更改两件事:

  1. 请使用@SpringBootTest而不是@EnableAutoConfiguration。这使您在步骤2中需要的配置属性支持等其他几项功能得以实现。
  2. 创建src/test/resources/application.properties并设置端口和键空间名称。
代码语言:javascript
运行
复制
spring.data.cassandra.port=9142
spring.data.cassandra.keyspace-name=keyspaceToCreate

这将配置正确的端口和密钥空间。

或者,可以使用以下方法指定属性

代码语言:javascript
运行
复制
@SpringBootTest({"spring.data.cassandra.port=9142",
                 "spring.data.cassandra.keyspace-name=keyspaceToCreate"})
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38720737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档