Java SpringBootTest正在连接到数据库

Java SpringBootTest正在连接到数据库,java,spring,testing,spring-data-jpa,spring-test,Java,Spring,Testing,Spring Data Jpa,Spring Test,我有一个测试,测试spring应用程序的一些部分。 它正在使用SpringRunner和注释@SpringBootTest,因此它正在启动一个完整的spring服务器 问题是测试是由一个无法访问数据库的服务器执行的,所以我得到了很多连接超时,这会减慢测试 连接问题本身并不是一个真正的问题,因为测试模拟对数据库的调用,因此它们不依赖于存在的连接。只是测试速度慢(而且很难看) 所以测试看起来有点像这样: @RunWith(SpringRunner.class) @SpringBootTest(web

我有一个测试,测试spring应用程序的一些部分。 它正在使用
SpringRunner
和注释
@SpringBootTest
,因此它正在启动一个完整的spring服务器

问题是测试是由一个无法访问数据库的服务器执行的,所以我得到了很多连接超时,这会减慢测试

连接问题本身并不是一个真正的问题,因为测试模拟对数据库的调用,因此它们不依赖于存在的连接。只是测试速度慢(而且很难看)

所以测试看起来有点像这样:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class DispatcherTest
它使用这个属性文件

spring.datasource.url:jdbc:oracle:thin:@100.32.13.32:1521:TEST
spring.datasource.username:sa
spring.datasource.password:password
spring.datasource.driver-class-name:oracle.jdbc.OracleDriver
spring.jpa.database-platform:org.hibernate.dialect.Oracle10gDialect
我认为问题在于有很多不同的JPA存储库正在像这样被扫描

@EnableJpaRepositories("package.*")

那么,有没有什么奇特的方法告诉spring不要连接到数据库,或者我必须模拟每个JPA存储库类?

您可以使用spring配置文件来分割配置。大概是这样的:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class DispatcherTest

在这个场景中,我有三个配置文件来拆分每个配置。 您可以查看文档和

要使用某些配置文件启动应用程序,只需执行以下操作:

java -Dspring.profiles.active=development -jar yourApplication.jar
在您的情况下,您可以使用概要文件测试来连接嵌入式(如H2)或其他本地数据库以测试IMPL


(我不是以英语为母语的人,可能有语法错误)

考虑使用spring配置文件来分割测试连接和“生产”连接。请参阅文档:可以使用内存中的数据库来测试IMLS。也