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

Docker Compose运行Redis搭配.NET Core集成测试无结果问题咨询

问题修复方案

你遇到的核心问题是测试执行逻辑的运行时机错误、容器日志输出配置缺失,按以下步骤修改即可看到测试结果:


1. 修正Dockerfile的测试执行时机

当前你把dotnet test写在RUN指令中,该指令仅在镜像构建阶段执行,docker compose up时如果镜像已缓存就不会重新触发执行,自然看不到测试输出。调整为CMD指令让测试在容器启动时运行:

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["tests/RedisTest/RedisTest.csproj", "tests/RedisTest/"]
RUN dotnet restore "tests/RedisTest/RedisTest.csproj"
COPY . .
# 将RUN改为CMD,容器启动时才执行测试,同时新增控制台日志输出配置
CMD ["dotnet", "test", "/src/tests/RedisTest/RedisTest.csproj", "-c", "Release", "--logger", "trx;LogFileName=test_results.trx", "--logger", "console;verbosity=normal"]

CMD和下方compose配置中的entrypoint二选一即可,无需同时配置


2. 调整docker-compose.yml配置

新增日志输出、测试结果挂载、Redis就绪等待的相关配置:

version: '3.4'

services:  
  redis-service:
    image: redis
    container_name: redis
    restart: on-failure
    ports:
      - "6379:6379" 
  test-service:
    image:  ${DOCKER_REGISTRY-}redistest
    depends_on:
      - redis-service
    build:
      context: .
      dockerfile: tests/RedisTest/Dockerfile
    # 关闭日志缓冲,保证测试输出实时打印到终端
    tty: true
    # 挂载本地目录,持久化保存测试结果报告
    volumes:
      - ./test-results:/src/tests/RedisTest/TestResults
    # 等待Redis完全启动后再执行测试,避免连接失败直接退出
    entrypoint: ["/bin/sh", "-c", "sleep 3 && dotnet test /src/tests/RedisTest/RedisTest.csproj -c Release --logger \"trx;LogFileName=test_results.trx\" --logger \"console;verbosity=normal\""]

3. 调整启动命令

执行以下命令启动服务,强制重新构建镜像、测试容器退出时自动终止所有服务并输出全量日志:

docker compose up --build --abort-on-container-exit

执行完成后可以直接在终端查看测试执行日志,也可以在本地当前目录的test-results文件夹中拿到trx格式的测试报告文件。


4. 历史日志查询方法

如果测试容器已经退出,可直接执行以下命令查看历史执行日志:

# 先查询所有容器,获取测试容器的ID/名称
docker ps -a
# 查看对应容器的历史输出
docker logs <测试容器ID/名称>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:45:03