背景
开发工具:eclipse
项目环境:SpringBoot+junit4,为每个业务类开发单元测试类。
问题
单个单元测试类,通过run as --> JunitTest,每个测试类可以成功运行。
整体单元测试类,通过mvn test运行项目所有单元测试,抛出异常
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: “Too many connections”
分析
每个单元测试类都有加@SpringBootTest注解,运行单元测试时会加载配置文件启动SpringBoot上下文,多个单元测试类就会启动多个SpringBoot上下文,每个上下文中使用单独的数据库连接池,连接池配置连接池连接数过大,而实际数据库中配置的数据库连接池不能满足分配,则会报出此异常。
解决
- 调整数据库最大连接数(/etc/my.cnf)
max_connections=1000
wait_timeout = 600
interactive_timeout = 600 - 调整项目中数据源配置(src/test/resources/application.yml)