在我的Spring Boot 1.5.1应用程序中,我将为Cassandra相关逻辑编写单元/集成测试。
我添加了以下Maven依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-cassandra</artifactId>
</dependency>
默认的Spring Boot Cassandra配置将连接到真正的Cassandra DB服务器。
在Spring/Spring Boot中是否有任何选项可以将我的测试配置为使用嵌入式Cassandra服务器?如果是这样,请显示所需的配置。
我知道这是一个老话题,但有两种方法可以将嵌入式Cassandra与Spring结合使用。
我创建了一个示例应用程序,您可以查看以下Github存储库。
注意:嵌入式服务器在9142端口上启动,而不是在9042端口上!!!
步骤1:
将以下maven插件添加到pom.xml
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cassandra-maven-plugin</artifactId>
<version>3.6</version>
<executions>
<execution>
<goals>
<goal>start</goal>
<goal>stop</goal>
</goals>
</execution>
</executions>
<configuration>
<startNativeTransport>true</startNativeTransport>
</configuration>
</plugin>
第二步:
在项目的根级别创建cassandra/cql目录。嵌入式Cassandra服务器将从此目录初始化数据库。
重要提示:此目录中的所有文件都是。cql文件。
示例:cassandra/cql/load。cql公司
步骤3:
创建集成测试。
重要提示:只有带有IT后缀的测试类才被Surfre插件解释为集成测试。
步骤4:
mvn验证以运行集成测试
Spring Boot中没有嵌入式Apache Cassandra支持,也没有计划。一方面,对嵌入式Apache Cassandra的需求很少,另一方面,Apache Cassandra具有许多与Boot的其他依赖项冲突的依赖项。
看看卡珊德拉单位。
在使用JUnit测试时,您还可以构建自己的测试规则,从而完全控制Apache Cassandra版本、运行时行为等。看看一个可能的实现:CassandraRule。JAVA
我们在Cassandra Spring Boot项目中使用。以下是对我们有效的步骤:
a) 像这样配置您的测试
import org.cassandraunit.spring.CassandraDataSet;
import org.cassandraunit.spring.CassandraUnitDependencyInjectionTestExecutionListener;
import org.cassandraunit.spring.CassandraUnitTestExecutionListener;
import org.cassandraunit.spring.EmbeddedCassandra;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestConfiguration.class)
@TestExecutionListeners(listeners = {
CassandraUnitDependencyInjectionTestExecutionListener.class,
CassandraUnitTestExecutionListener.class,
ServletTestExecutionListener.class,
DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class
})
@EmbeddedCassandra(timeout = 60000)
@CassandraDataSet(value = {"bootstrap_test.cql"}, keyspace = "local_test")
public abstract class BaseTest {
b)在您的src/test/资源/application.properties中,添加这个(请注意,嵌入式cassandra从端口9142开始,但不是在默认9042上)
spring.data.cassandra.port=9142
spring.data.cassandra.keyspace-name=local_test
c) 创建空文件bootstrap\u test。src/测试/资源中的cql
d) 添加到您的pom。xml
<dependency>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit-spring</artifactId>
<version>${cassandra-unit.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.cassandraunit</groupId>
<artifactId>cassandra-unit-spring</artifactId>
<version>${cassandra-unit.version}</version>
</dependency>
这应该足以使用嵌入式Cassandra运行测试。希望有帮助。
我有时会在pom中看到以下声明。xml。。。 如您所见,sping-boo-starter-web被声明为tomcat-embed-jasper。 是不是sping-boo-starter-web已经有一个嵌入式tomcat了?为什么一些开发人员仍然声明tomcat-embed-jasper以及boot-starter-web?还是有什么原因?
我正在构建一个将使用neo4j的web应用程序。我将在Java构建一个REST API,它将使用Neo4j嵌入式版本。这个架构有什么问题吗? 用别的方法好吗?Neo4j服务器? 谢谢!
我在我的SpringBoot应用程序中使用下面提到的属性,在文件中让LDAP代码在我的本地机器上运行。 我想同时拥有我的嵌入式配置
在学习教程的同时,我正在使用SPRING初始化器https://start.spring.io/使用springboot 2.0.2生成带有reactiveMongoDB的项目。 gradle文件列出:compile('org.springframework.boot:spring-boot-starter-data-mongodb-reactive') 我能够将该项目导入eclipse,主类使用
问题内容: 我有一个使用SQLite的C ++程序。我想将SQL查询存储在一个单独的文件中-纯文本文件, 而不是 源代码文件- 但要将该文件像资源一样嵌入到可执行文件中。 (它必须在Linux上运行,因此就我所知,我无法将其存储为实际资源,尽管如果是Windows,那将是完美的。) 有什么简单的方法可以做到这一点,还是有效地要求我为Linux编写自己的资源系统?(很容易,但是会花费更长的时间。)
我有一个Spring Boot和嵌入式Mongo DB的项目,我也想查找存储在那里的数据。我学习了本教程https://springframework.guru/spring-boot-with-embedd-mongoDB/