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

Azure门户部署Web应用时,如何配置自动化单元测试?

刚好折腾过类似的配置,给你梳理下怎么在Azure的自动部署流程里加上NUnit单元测试,分两种最常用的场景来说——看你是用Azure DevOps Pipelines还是直接用App Service的Deployment Center:

场景一:基于Azure DevOps Pipelines的自动部署

如果你的自动部署是通过Azure DevOps Pipelines配置的,步骤很清晰:

  • 第一步:确保构建任务覆盖所有项目
    先在Pipeline里保留(或添加)一个.NET构建任务——不管你的项目是.NET Core还是.NET Framework,都选对应的任务类型。配置的时候指定解决方案路径为Solution.sln,这样能同时编译Main项目和单元测试项目,确保代码语法和依赖都没问题。

  • 第二步:添加NUnit测试执行任务
    在构建任务之后,添加一个专门的NUnit测试任务(Azure DevOps市场里有官方的NUnit任务)。核心配置是测试程序集的路径,比如:

    **/Solution.Services.UnitTest/bin/$(BuildConfiguration)/Solution.Services.UnitTest.dll
    

    这里的$(BuildConfiguration)是Pipeline的内置变量,对应你常用的Release或Debug环境。记得勾选「Fail task on failed tests」选项——这样只要有一个测试不通过,整个流程就会中断,不会把有问题的代码部署上去。

  • 第三步:把部署任务放在测试之后
    之前你已经配置好的Azure App Service部署任务,一定要放在测试任务的后面。这样只有当所有单元测试都通过时,才会触发部署动作。

场景二:基于Azure App Service Deployment Center的自动部署

如果你的自动部署是直接连接GitHub/GitLab等代码仓库,用Deployment Center默认的流程,那需要自定义构建脚本来加入测试步骤:

  • 第一步:在仓库根目录添加构建脚本
    根据你的部署环境(Windows或Linux),创建对应的脚本文件:

    • 如果你部署到Windows App Service,创建build.cmd:

      :: 编译整个解决方案
      dotnet build Solution.sln --configuration Release
      :: 运行单元测试(--no-build避免重复编译)
      dotnet test Solution.Services.UnitTest/Solution.Services.UnitTest.csproj --configuration Release --no-build
      :: 发布Main项目到指定目录
      dotnet publish Solution/Main.csproj --configuration Release --output ./publish
      

      (如果是.NET Framework项目,把命令换成msbuild和vstest.console.exe即可,比如msbuild Solution.sln /p:Configuration=Release,然后vstest.console.exe Solution.Services.UnitTest/bin/Release/Solution.Services.UnitTest.dll)

    • 如果是Linux环境,创建build.sh,语法类似,把命令改成bash格式。

  • 第二步:在Deployment Center里配置自定义构建
    登录Azure Portal,打开你的App Service,进入「Deployment Center」,找到「Build provider」选项,选择「Custom」,然后指定你刚才创建的脚本路径(比如build.cmd)。

  • 第三步:验证流程
    保存配置后,提交一次代码测试——Azure会先执行脚本里的编译、单元测试,只有测试全部通过,才会把Main项目部署到App Service。

几个额外的小提示
  • 确保你的单元测试项目里已经引用了NUnit3TestAdapter包,这样dotnet test或者NUnit任务才能正确识别并运行测试用例。
  • 可以在Azure DevOps Pipelines里添加「Publish Test Results」任务,把测试失败的详情生成可视化报告,方便快速定位问题。
  • 如果是.NET Framework项目,要确认Azure的构建环境安装了对应的.NET Framework版本,避免编译或测试失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:08:29