如何将Gradle+Java+Selenium+JUnit自动化测试项目打包到Docker中运行
Selenide Gradle测试项目Docker封装方案
1. 项目配置适配
首先修改Selenide全局配置,适配容器内无头Chrome运行环境,可将以下配置添加到JUnit测试类的公共前置逻辑中:
// 指定浏览器为Chrome Configuration.browser = "chrome"; // 开启无头模式 Configuration.headless = true; Configuration.browserSize = "1920x1080"; // 容器环境必加的Chrome启动参数,避免权限、内存不足问题 Configuration.chromeOptions.addArguments("--no-sandbox"); Configuration.chromeOptions.addArguments("--disable-dev-shm-usage"); Configuration.chromeOptions.addArguments("--disable-gpu"); // 开启自动下载匹配版本的ChromeDriver,无需手动打包驱动到项目 Configuration.driverManagerEnabled = true;
2. 编写Dockerfile
在项目根目录创建Dockerfile文件,内容如下,可根据你项目实际使用的JDK、Gradle版本调整基础镜像标签:
# 基础镜像已预装对应版本的JDK和Gradle,避免手动配置环境 FROM gradle:8.5-jdk17 # 安装Chrome浏览器 RUN apt-get update && apt-get install -y \ wget \ gnupg \ --no-install-recommends \ && wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \ && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \ && apt-get update && apt-get install -y google-chrome-stable \ && rm -rf /var/lib/apt/lists/* # 设置容器内工作目录 WORKDIR /app # 先复制Gradle配置文件,做依赖缓存,减少后续构建耗时 COPY build.gradle settings.gradle /app/ RUN gradle build --no-daemon -x test || true # 复制完整项目代码到容器内 COPY . /app # 设置默认启动命令为执行测试 ENTRYPOINT ["gradle", "test", "--no-daemon"]
3. 镜像构建与运行
- 构建镜像:在项目根目录执行命令
docker build -t selenide-test:v1 . - 直接运行测试,执行完成后自动销毁容器,日志直接输出到控制台
docker run --rm selenide-test:v1
4. 可选:测试结果持久化到宿主机
Gradle默认会将测试报告生成到/app/build/reports/tests/test目录,运行容器时挂载宿主机目录即可将结果导出:docker run --rm -v $(pwd)/test-result:/app/build/reports/tests/test selenide-test:v1
执行完成后打开宿主机当前目录下test-result/index.html即可查看完整测试报告。
如果需要进入容器内调试,可执行命令覆盖默认入口:docker run -it --entrypoint bash selenide-test:v1
内容的提问来源于stack exchange,提问作者TemirlanU
相关产品推荐
相关产品推荐

