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

能否在Azure Pipelines中基于预构建测试项目运行VsTest?

可行性分析与实现方案

完全可行。只要冒烟测试项目的依赖(如Selenium版本、.NET框架版本等)和暂存服务器环境无变更,预构建的测试程序集可直接重复用于VsTest步骤,跳过Restore和Build能大幅缩短流水线运行时长。

具体实现步骤

1. 预先构建并存储测试程序集

  • 单独执行一次完整的测试项目构建流程(包含Restore、Build),将生成的测试程序集(*.dll、*.pdb)、依赖配置文件(如appsettings.json)、Selenium驱动(如chromedriver.exe)等全部打包,上传至Azure Pipeline的管道工件(Pipeline Artifacts):
    • 添加Publish Pipeline Artifact任务,指定待上传的文件夹路径(例:$(Build.ArtifactStagingDirectory)/SmokeTests),设置固定的工件名称(如SmokeTestAssemblies)。
  • 务必打包所有依赖项,否则测试运行时会出现缺失文件或驱动的错误。

2. 修改现有流水线,跳过构建步骤

  • 在测试阶段开头添加Download Pipeline Artifact任务,选择之前上传的SmokeTestAssemblies,下载至代理本地路径(例:$(Agent.TempDirectory)/SmokeTests)。
  • 删除原有的Restore和Build步骤,修改VsTest任务的程序集路径为下载后的路径,示例配置:
    - task: VSTest@2
      inputs:
        testAssemblyVer2: |
          $(Agent.TempDirectory)/SmokeTests/**/*.Tests.dll
        searchFolder: '$(Agent.TempDirectory)/SmokeTests'
        # 保留原有测试过滤器、环境变量等配置
    

3. 维护预构建程序集的更新机制

  • 当测试代码或依赖发生变更时,需重新执行完整构建流程并覆盖原有工件。可设置触发规则,仅在测试项目目录变更时触发构建:
    trigger:
      paths:
        include:
          - Tests/SmokeTests/**/*
        exclude:
          - '*'
    
  • 可给工件添加版本号(如SmokeTestAssemblies_$(Build.BuildNumber)),方便后续回滚或指定版本调用。

关键注意事项

  • 确保测试代理环境与构建环境一致:包括.NET SDK版本、VS测试工具版本,避免因环境差异导致测试失败。
  • Selenium驱动需匹配暂存服务器的浏览器版本,建议将驱动打包进预构建工件,或在VsTest步骤前添加任务下载对应版本驱动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:33:16