【发布时间】:2022-01-07 09:54:24
【问题描述】:
有一个基于 SpringBoot 的应用程序运行在服务器上,它定期插入/更新关系数据库中的记录。
数据库连接是这样设置的:
import org.springframework.context.annotation.Bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import javax.sql.DataSource;
[...]
@Configuration
@EnableConfigurationProperties
public class DbConfigClass {
[...]
@Bean(name = "myDataSource")
@ConfigurationProperties(prefix = "com.mycompany.somedatabase")
public DataSource dsSomeDataSource() {
return DataSourceBuilder.create().build();
}
[...]
}
有时连接会以不规则、不可预测的间隔中断。然后,我得到这样的错误:
java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available,
request timed out after 30001ms.
at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:694)
我需要确保我的应用程序可以处理此类中断。为此,我需要能够在本地重现此行为。
我该怎么做?
我查看了ToxyProxy,这似乎符合我的要求。
但是,我想知道我是否可以用更少的努力模拟这种情况,例如。 G。通过使用 Mockito.spy 修改数据源,使其有时会抛出上述异常。
【问题讨论】:
-
模拟连接池并编写两个测试:第一个测试连接成功返回,第二个测试连接不可用。
标签: java spring database testing jdbc