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

JHipster v7.9.x版本集成测试全部失败问题求助

问题:JHipster v7.9.x集成测试失败(Docker/TestContainers相关)

环境配置

Windows 10 22H2 build 19045.2251 (64 bit)
OpenJDK Runtime Environment Temurin-16.0.2+7
node 16.17.0
npm 8.19.1
Gradle 7.5.1
MariaDB 10.6.8
Chrome 107.0.5304.107

项目JDL配置(myapp.jh)

application {
  config {
    baseName myapp,
    packageName com.mycompany.app,
    applicationType monolith,
    authenticationType jwt,
    cacheProvider ehcache,
    enableHibernateCache true,
    databaseType sql,
    devDatabaseType mariadb,
    prodDatabaseType mariadb,
    buildTool gradle,
    clientPackageManager npm,
    clientFramework angular,
    clientTheme minty,
    clientThemeVariant primary,
    testFrameworks [protractor, cypress],
    nativeLanguage en,
    languages [en, es],
    jhiPrefix myapp,
    jwtSecretKey "YjAwZDU2ODI3NzNjZjk0NjVhY2UzNGViZmY0YjY1ZGY2MDI5MTc5Y2FlZWYxNzE5Yjg5ZjMxOGZhZTgwZjA5NTFkN2VmNDM3ZGMyZDNjZTViNDAwYTg4NmNlMmM2ZDkxZTMwMDk5YmUxNWNkZmE0YTNiNDlhMGNhZmM4OTk1NmQ="
  }
}

操作步骤

  • 安装JHipster v7.9.3:npm install -g generator-jhipster
  • 导入JDL配置:jhipster jdl myapp.jh
  • 构建应用:gradle build

问题现象

构建过程无异常,但所有集成测试均失败,错误栈示例如下:

HibernateTimeZoneIT > storeLocalDateTimeWithZoneIdConfigShouldBeStoredOnGMTTimeZone() FAILED
    java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132
        Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1804
            Caused by: java.lang.IllegalStateException at DockerClientProviderStrategy.java:257

尝试JHipster v7.9.2、v7.9.0版本均出现相同问题,直接执行gradle integrationTest也报错;降级至JHipster v7.8.1版本后,所有测试正常通过;跳过集成测试直接运行应用(./gradlew和npm start)可正常工作。


问题原因与解决方案

JHipster v7.9.x升级了TestContainers版本,对Docker环境的检测逻辑更严谨,错误根源是TestContainers无法找到可用的Docker环境来启动MariaDB测试容器。

修复步骤

  1. 确认Docker运行状态
    确保Docker Desktop在Windows上处于运行状态,可通过执行docker ps验证是否能正常连接Docker守护进程。

  2. 检查Docker环境配置

    • 若使用WSL2后端,确保WSL2与Windows的Docker环境同步,且当前用户拥有Docker访问权限。
    • 若自动检测失败,可手动指定Docker主机地址:
      在src/test/resources/application-test.yml中添加:
      testcontainers:
        docker:
          host: tcp://localhost:2375
      
    • 若使用WSL2终端运行测试,可设置环境变量:export DOCKER_HOST=unix:///var/run/docker.sock
  3. 替代方案:使用嵌入式数据库
    若本地无Docker环境,可修改测试配置改用H2嵌入式数据库:
    修改src/test/resources/application-test.yml中的数据库配置:

    spring:
      datasource:
        url: jdbc:h2:mem:myapp;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
        driverClassName: org.h2.Driver
        username: sa
        password:
      jpa:
        database-platform: org.hibernate.dialect.H2Dialect
    

    同时移除或注释项目中TestContainers相关的配置类(如MariaDBTestContainerConfiguration.java)。


内容的提问来源于stack exchange,提问作者Mike Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:20:52