Java SpringBootTest正在连接到数据库
我有一个测试,测试spring应用程序的一些部分。 它正在使用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
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。也