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

如何在C#中关联项目与单元测试项目?Docker环境下如何配置?

问题1:C#开发环境中关联主项目与单元测试项目

Visual Studio 操作步骤

  • 确保主项目和测试项目处于同一个解决方案中
  • 右键测试项目 → 选择「添加」→「项目引用」→ 在弹出窗口勾选目标主项目,点击确定
  • 确认测试项目已安装对应测试框架包(如xUnit、NUnit或MSTest),未安装可通过NuGet包管理器添加
  • 打开「测试资源管理器」,运行测试验证关联是否生效

VS Code/.NET CLI 操作步骤

在终端执行以下命令,将测试项目关联到主项目:

dotnet add [测试项目路径] reference [主项目csproj文件路径]

示例:

dotnet add portal-web-test reference portal-web/portal-web.csproj

执行后测试项目会自动添加主项目引用,可直接编写并运行测试用例。

问题2:Dockerfile中实现主项目与测试项目的关联及测试执行

你当前的Dockerfile注释掉了csproj文件复制,会导致dotnet restore无法精准恢复依赖,也无法确保测试项目正确关联主项目。以下是调整后的Dockerfile,包含完整的构建、测试流程:

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# 构建与测试阶段:用SDK镜像完成编译和测试
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-test
ARG BUILD_CONFIGURATION=Release
WORKDIR /src

# 1. 复制解决方案和项目文件,利用Docker缓存优化构建速度
COPY ["*.sln", "."]
COPY ["portal-web/portal-web.csproj", "portal-web/."]
COPY ["portal-web-test/portal-web-test.csproj", "portal-web-test/."]

# 2. 恢复所有项目依赖
RUN dotnet restore

# 3. 复制全部源代码
COPY . .

# 4. 分别构建主项目和测试项目
WORKDIR "/src/portal-web"
RUN dotnet build -c $BUILD_CONFIGURATION -o /app/build

WORKDIR "/src/portal-web-test"
RUN dotnet build -c $BUILD_CONFIGURATION -o /app/test-build

# 5. 运行单元测试(--no-build 避免重复构建)
RUN dotnet test --no-build -c $BUILD_CONFIGURATION --results-directory /app/test-results

# 可选:将测试结果复制到最终镜像,方便后续查看
# FROM base AS final
# WORKDIR /app
# COPY --from=build-test /app/build .
# COPY --from=build-test /app/test-results ./test-results
# ENTRYPOINT ["dotnet", "portal-web.dll"]

关键调整说明

  • 取消csproj文件的注释,单独复制项目文件后执行dotnet restore,可利用Docker缓存,避免每次代码修改都重新下载依赖
  • 分别构建主项目和测试项目,确保测试项目能正确引用主项目的编译结果
  • 添加dotnet test命令执行单元测试,验证主项目与测试项目的关联有效性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 00:12:11