使用连接池进行Spring Boot和数据库测试

迪尔伯特·埃伯尼亚

我正在尝试为连接数据库的应用程序创建测试。数据源是一个连接池(光)。

这是我的测试配置:

@Configuration
public class SqlTestConfig {

    @Bean
    DataSource dataSource() {
        HikariConfig config = new HikariConfig();
        config.setMaximumPoolSize(2);
        config.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        config.setJdbcUrl("jdbc:sqlserver://serversql:1433;database=myDatabase");
        config.setUsername("user");
        config.setPassword("password");
        return new HikariDataSource(config);
    }
}

这是我的测试课:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SqlTestConfig.class)
@Slf4j
@Sql(
        scripts = "/clearTables.sql",
        config = @SqlConfig(separator = "GO")
)
public class SqlTest {

    @Autowired
    DataSource dataSource;

    @Test
    public void test1() throws SQLException {
        log.info("catalog:" + dataSource.getConnection().getCatalog());
    }

    @Test
    public void test2() throws SQLException {
        log.info("catalog:" + dataSource.getConnection().getCatalog());
    }

    @Test
    public void test3() throws SQLException {
        log.info("catalog:" + dataSource.getConnection().getCatalog());
    }

    @Test
    public void test4() throws SQLException {
        log.info("catalog:" + dataSource.getConnection().getCatalog());
    }
}

请注意,MaximumPoolSize设置为2。当我运行测试类时,前两个测试已成功完成,而其余测试失败,因为该池耗尽了连接(连接超时)。

我相信问题是由于@Sql批注引起的,该批注会导致DataSourceInitializer -s创建执行清理脚本,但连接永远不会返回到池中。

当我将MaximumPoolSize设置为4时,所有测试均成功完成。我无法确定我是否犯了配置错误,或者这是否是Spring中的错误。

亲爱的太阳

getConnection获取从资产池的连接。更改测试以正确关闭获取的连接,如下所示:

@Test
public void test1() throws SQLException {
    try (Connection connection = dataSource.getConnection()) {
        log.info("catalog:" + connection.getCatalog());
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Vaadin和数据库连接池

来自分类Dev

Vaadin和数据库连接池

来自分类Dev

使用HSQLDB和Spring嵌入式数据库启用连接池

来自分类Dev

使用java代码中的数据库属性在Spring中配置连接池

来自分类Dev

使用 Mongodb 的 Spring Boot 和数据库默认数据

来自分类Dev

Spring-boot + JDBC + HSQLDB:如何验证Spring Boot是否正在使用连接池?

来自分类Dev

我是否正确进行了连接池?使用node-postgres库

来自分类Dev

Oracle数据源连接池无法与Spring和JDBCTemplate一起使用

来自分类Dev

如何在Spring JPA中管理数据库连接池?

来自分类Dev

Spring Boot中tomcat的默认连接池?

来自分类Dev

Spring Boot / Amazon PostgreSQL RDS连接池问题

来自分类Dev

将Spring Boot与EBean和HikariCP连接池集成

来自分类Dev

Spring Boot 1.2.5,Oracle和Hibernate连接池

来自分类Dev

将Spring Boot与EBean和HikariCP连接池集成

来自分类Dev

设置连接池。重新连接数据库

来自分类Dev

如何在Sequelize.js中使用数据库连接池

来自分类Dev

使用Hikari池进行Spring Boot-不重用连接

来自分类Dev

R并行进程的数据库连接池

来自分类Dev

了解python中的数据库连接池

来自分类Dev

golang sqlite数据库连接池

来自分类Dev

Tomcat-数据库连接池问题

来自分类Dev

在多个不同数据库环境上的连接池

来自分类Dev

Java Servlet中的数据库连接池

来自分类Dev

节点MySQL连接池-等待数据库启动

来自分类Dev

Tomcat-数据库连接池问题

来自分类Dev

在多个不同数据库环境上的连接池

来自分类Dev

使用连接池时更新数据源

来自分类Dev

在内存数据库中使用Spring Boot测试

来自分类Dev

单例连接和数据库池