SpringBootTest正在连接到数据库

时间:2018-11-06 10:23:04

标签: java spring testing spring-data-jpa spring-test

我有一个测试正在测试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存储库类?

1 个答案:

答案 0 :(得分:2)

您可以使用spring配置文件来拆分配置。像这样:

enter image description here

在这种情况下,我有三个配置文件来拆分每个配置。 您可以看到文档herehere

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

java -Dspring.profiles.active=development -jar yourApplication.jar

根据您的情况,您可以使用配置文件测试连接嵌入式(例如H2)或另一个本地数据库来测试impls。

(我不是英语母语人士,可能存在语法错误)