java 坑死人的junit单元测试 ,多线程,连接池被关闭,线程中无法继续执行程序,报错: HikariDataSource (HikariPool-1) has been closed.
·
前言:调了一早上,到心态 崩溃,突然反应过来,真的是欲哭无泪呀,索性遭到了原因并解决了,大吉大利!大吉大利!
1.场景描述:
执行方式:junit单元测试
执行程序:
@Test
public void test() {
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
recordService.list();
}
}).start();
}
错误信息:Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: HikariDataSource HikariDataSource (HikariPool-1) has been closed.
2.错误分析-数据库连接中断,无法连接数据库获取数据
3.问题原因-junit主线程执行完成之后会调用System.exit()方法,将JVM关闭,所以子线程虽然在执行,但是却获取不到数据库链接了
4.问题处理-
方式一:在junit单元测试主线程最后加上线程等待时间 Thread.sleep(10000);
方式二:多线程避免在junit中测试,使用接口测试等其他方式
更多推荐
所有评论(0)