如何在.NET Azure构建流水线中实现单元测试先于构建流程执行
在Azure DevOps .NET构建流水线中配置前置单元测试的方法
Azure DevOps流水线默认按任务排列顺序执行,前序任务失败后自动终止后续任务运行,只需要将单元测试任务放在所有正式构建任务之前即可满足需求,以下是两种常用配置方式:
1. YAML流水线配置(推荐)
直接按以下顺序编排任务即可:
trigger: - main pool: vmImage: 'windows-latest' # 也可使用ubuntu-latest等镜像 steps: # 第一步:还原所有项目NuGet依赖 - task: DotNetCoreCLI@2 inputs: command: 'restore' projects: '**/*.csproj' # 第二步:执行单元测试,必须放在构建任务之前 - task: DotNetCoreCLI@2 inputs: command: 'test' projects: '**/*[Tt]ests/*.csproj' # 匹配所有测试项目,可根据实际路径调整 arguments: '--configuration Release' # 默认为false,测试失败时直接终止流水线,不运行后续任务 continueOnError: false # 第三步:测试全部通过后才会执行的正式构建任务 - task: DotNetCoreCLI@2 inputs: command: 'build' projects: '**/src/*.csproj' # 你的正式业务项目路径 arguments: '--configuration Release --no-restore'
如果你需要跳过测试项目的重复构建直接复用之前的编译结果,可以在测试命令添加--no-build参数,进一步提升执行效率。
2. 经典可视化编辑器配置
- 进入对应构建流水线的编辑界面,先确保已经添加了.NET Core的NuGet还原任务
- 新建一个.NET Core任务,命令选择「test」,拖动该任务到所有构建、打包、发布类任务的最上方,仅排在还原任务之后
- 配置测试任务的项目路径,建议用通配符
**/*Tests.csproj匹配所有单元测试项目 - 展开测试任务的「控制选项」栏,确认「出错时继续」选项未勾选,确保测试失败直接终止整个流水线
小提示:如果需要过滤仅运行单元测试、排除集成测试,可以在测试任务的参数栏添加
--filter "TestCategory=Unit",前提是你的单元测试方法已经加了[TestCategory("Unit")]的特性标记
内容的提问来源于stack exchange,提问作者AzureDevOpsBeginner
相关产品推荐
相关产品推荐

