SpringBootTest 正在连接数据库

SpringBootTest is connecting to database

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

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

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

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

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

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

(我的母语不是英语,可能包含语法错误)