4

CrudRepository로 cassandra를 사용하는 SpringBoot 응용 프로그램을 테스트하고 싶습니다. 나는SpringBoot : Cassandra로 단위 테스트

<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)) 

리드와

/* 
* 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>2.1.9.2</version> 
     <scope>test</scope> 
    </dependency> 

값 repo가 ​​삽입되지 않기 때문에 NullPointerException으로 끝납니다.

소스는 https://github.com/StephanPraetsch/spring.boot.cassandra.unit.test

답변

1

나는 카산드라 단위 스프링의 버전 3.x 나를 위해 호환되지 않는 가정하자. 더 나은 2.x. 2.X와

15:10:23.366 [pool-1-thread-1] ERROR org.apache.cassandra.service.CassandraDaemon - cassandra.jmx.local.port missing from cassandra-env.sh, unable to start local JMX service.null 
3

CassandraUnit 포트 9142에 시작하는 오류 로그가있다. 스프링 부트는 기본적으로 포트 9042으로 설정됩니다. Cassandra 드라이버가 올바른 연결 세부 정보를 얻을 수 있도록 포트와 키 공간 이름을 설정해야합니다.

당신은 테스트에서 두 가지를 변경해야

  1. @SpringBootTest 대신 @EnableAutoConfiguration 사용하십시오. 그러면 2 단계에서 필요한 구성 속성 지원과 같은 몇 가지 다른 작업을 수행 할 수 있습니다.

  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"}) 
0
@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest({ "spring.data.cassandra.port=9142", 
     "spring.data.cassandra.keyspace-name=keyspaceToCreate" }) 
@EnableAutoConfiguration 
@ComponentScan 
@ContextConfiguration 
@TestExecutionListeners({ CassandraUnitDependencyInjectionTestExecutionListener.class, 
     DependencyInjectionTestExecutionListener.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>2.1.9.2</version> 
     <scope>test</scope> 
    </dependency> 

작품을 사용하여 속성을 지정할 수 있습니다.

그러나 경우 업그레이드

<dependency> 
     <groupId>org.cassandraunit</groupId> 
     <artifactId>cassandra-unit-spring</artifactId> 
     <version>3.0.0.1</version> 
     <scope>test</scope> 
    </dependency> 

에 다시 나는 오류를 얻을

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))