【发布时间】:2018-11-06 10:23:03
【问题描述】:
我有一个测试正在测试 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 存储库类吗?
【问题讨论】:
-
考虑使用弹簧型材来拆分测试连接和“生产”连接。请参阅文档:docs.spring.io/spring-boot/docs/current/reference/html/…
-
可以使用内存数据库来测试 impls。 springboottutorial.com/spring-boot-and-h2-in-memory-database太
标签: java spring testing spring-data-jpa spring-test