You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地正常的JUnit测试在GitHub Actions中因MySQL连接失败报错

解决GitHub Actions中Spring Boot JUnit测试MySQL连接被拒绝的问题

1. 确保GitHub Actions工作流中启动MySQL服务

在你的Workflow配置文件(如.github/workflows/ci.yml)里,必须通过services字段启动MySQL容器,示例配置如下:

jobs:
  build:
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: test_db
          MYSQL_USER: test_user
          MYSQL_PASSWORD: test_pass
        ports:
          - 3306:3306
        options: >-
          --health-cmd="mysqladmin ping -h localhost"
          --health-interval=10s
          --health-timeout=5s
          --health-retries=3

注意事项:

  • 镜像版本尽量和本地测试用的MySQL版本保持一致,避免兼容性问题
  • ports映射要保证容器内3306端口映射到GitHub Runner主机的3306端口
  • 配置healthcheck是为了确保MySQL服务完全就绪后再执行测试,避免因服务未启动完成导致连接失败

2. 核对测试环境的数据库连接配置

在Spring Boot的application-test.properties或application-test.yml中,连接参数必须和Workflow里的MySQL服务配置完全匹配:

spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=test_user
spring.datasource.password=test_pass
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

关键细节:

  • 主机地址必须设为localhost,因为GitHub Runner中的MySQL服务是本地容器
  • 数据库名、用户名、密码要和Workflow的env配置完全一致
  • 添加useSSL=false规避SSL连接问题,serverTimezone=UTC解决时区不匹配导致的异常

3. 确认测试类的配置正确性

确保你的测试类正确加载测试环境配置,比如添加@ActiveProfiles("test")注解:

@SpringBootTest
@ActiveProfiles("test")
public class YourServiceTest {
    // 测试代码逻辑
}

如果使用@DataJpaTest等切片注解,也要保证它能正确读取测试数据源配置。

4. 排查依赖兼容性问题

检查pom.xml中MySQL驱动版本与Workflow使用的MySQL镜像版本是否兼容:

  • MySQL 8.0+需搭配mysql-connector-java 8.0.x版本,驱动类为com.mysql.cj.jdbc.Driver
  • MySQL 5.7及以下版本可使用mysql-connector-java 5.1.x版本,驱动类为com.mysql.jdbc.Driver

5. 查看GitHub Actions详细日志定位问题

若以上步骤都配置正确,查看GitHub Actions日志中MySQL服务的启动记录,确认:

  • MySQL容器是否成功启动
  • 是否存在数据库初始化错误
  • 测试代码是否正确读取了连接参数

内容的提问来源于stack exchange,提问作者Benamor Omar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:35:36