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

如何用Docker构建基于NUnit+C#的Selenium测试镜像?

简易容器化NUnit+Selenium测试步骤

1. 编写最简Dockerfile

在测试项目根目录创建Dockerfile,根据你的.NET版本调整镜像标签(示例适配.NET 8):

# 构建阶段:编译测试项目
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY YourTestProject.csproj .
RUN dotnet restore
COPY . .
RUN dotnet build -c Release -o /app/build

# 运行阶段:执行测试并处理Selenium依赖
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS test-runner
WORKDIR /app
COPY --from=build /app/build .
# 安装Linux版Chrome和ChromeDriver
RUN apt-get update && apt-get install -y chromium chromium-driver
# 设置Selenium环境变量,启用无头模式
ENV CHROME_BIN=/usr/bin/chromium
ENV CHROMEDRIVER_EXECUTABLE=/usr/bin/chromedriver
# 执行测试并生成NUnit XML报告
ENTRYPOINT ["dotnet", "test", "--logger:nunit;LogFilePath=TestResults.xml"]

替换YourTestProject.csproj为实际项目文件名;若用.NET 6/7,将镜像版本改为6.0/7.0即可。

2. 本地构建验证

进入Dockerfile所在目录,执行命令:

# 构建镜像
docker build -t selenium-nunit-tests .
# 本地运行并映射结果目录到本地
docker run -v $(pwd)/test-results:/app/test-results selenium-nunit-tests

运行后本地test-results文件夹会生成TestResults.xml,确认测试正常执行。

3. 上传镜像到Linux服务器

方式1:Docker Hub中转

# 给镜像打标签(替换为你的Docker Hub用户名)
docker tag selenium-nunit-tests your-hub-username/selenium-nunit-tests:v1
# 推送至Docker Hub
docker push your-hub-username/selenium-nunit-tests:v1
# 服务器拉取镜像
docker pull your-hub-username/selenium-nunit-tests:v1

方式2:离线导出导入

# 本地导出镜像为tar包
docker save -o selenium-tests.tar selenium-nunit-tests
# 传输到服务器(示例用scp)
scp selenium-tests.tar user@server-ip:/opt/
# 服务器导入镜像
docker load -i /opt/selenium-tests.tar

4. 服务器设置每日自动执行

用Linuxcron实现定时任务:

  1. 编辑crontab配置:
crontab -e
  1. 添加定时规则(每天凌晨2点执行,结果保存到服务器/opt/test-results目录):
0 2 * * * docker run --rm -v /opt/test-results:/app/test-results selenium-nunit-tests
  1. 保存退出后cron自动生效。

关键注意事项

  • 测试代码需配置无头Chrome,示例:
var options = new ChromeOptions();
options.AddArgument("--headless=new");
options.AddArgument("--no-sandbox");
options.AddArgument("--disable-dev-shm-usage");
var driver = new ChromeDriver(options);
  • 服务器需提前安装Docker;若测试访问内部服务,需确保容器与服务在同一Docker网络。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:35:10