Azure DevOps Pipeline:同解决方案下.NET项目测试路径配置问题
解决Azure DevOps Pipeline中无法找到NUnit测试项目的问题
核心问题是你的YAML文件位于MyProject根目录,而测试项目MyProject.Tests和MyProject属于同级目录(同属一个解决方案),默认路径下测试任务无法定位到上级目录的测试项目文件。以下是两种可行的修改方案:
方案1:直接指定测试项目的相对路径
利用相对路径从MyProject目录导航到同级的MyProject.Tests项目,修改后的YAML示例如下:
trigger: - main # 根据你的实际分支名调整 pool: vmImage: 'windows-latest' # 按需选择符合项目需求的镜像 steps: # 步骤1:构建主项目MyProject - task: DotNetCoreCLI@2 inputs: command: 'build' projects: '**/MyProject.csproj' # YAML在MyProject目录下,该路径可匹配到主项目文件 arguments: '--configuration Release' # 按需配置构建环境 # 步骤2:运行NUnit测试,指定测试项目的相对路径 - task: DotNetCoreCLI@2 inputs: command: 'test' projects: '../MyProject.Tests/MyProject.Tests.csproj' # 关键:用../回到上级目录定位测试项目 arguments: '--configuration Release --no-build' # --no-build避免重复构建,提升流水线效率 testRunTitle: 'MyProject NUnit Tests'
方案2:通过解决方案文件统一构建和测试(推荐)
既然两个项目同属一个解决方案,直接基于解决方案文件操作会更简洁,无需单独指定每个项目路径:
trigger: - main pool: vmImage: 'windows-latest' steps: # 步骤1:构建整个解决方案 - task: DotNetCoreCLI@2 inputs: command: 'build' projects: '../MySolution.sln' # 替换为你的实际解决方案文件名,路径回到上级目录 arguments: '--configuration Release' # 步骤2:运行解决方案中的所有测试项目 - task: DotNetCoreCLI@2 inputs: command: 'test' projects: '../MySolution.sln' arguments: '--configuration Release --no-build' testRunTitle: 'MyProject NUnit Tests'
额外注意事项
- 确保
MyProject.Tests.csproj中已正确安装必要的NuGet包:NUnit、NUnit3TestAdapter和Microsoft.NET.Test.Sdk,缺少这些包会导致测试无法正常执行。 - 如果你的目录结构和上述示例不同,需调整相对路径以匹配实际的项目位置。
内容的提问来源于stack exchange,提问作者StanSm789
相关产品推荐
相关产品推荐

