Azure DevOps Pipeline:在同一解决方案中构建和测试单独的 .NET 项目

问题描述 投票:0回答:1

在 azure DevOps 中,我有一个包含 2 个 .NET 项目的组织:“MyProject”和“MyProject.Tests”。这两个项目属于同一个解决方案。我正在构建管道,YAML 文件位于“MyProject”中。 此 YAML 文件中的以下代码片段应该构建“MyProject”,然后从“MyProject.Tests”运行测试

jobs:
- job: Build and Test
  displayName: Build and Test
  steps:
  - task: DotNetCoreCLI@2
    inputs:
      command: 'build'
      projects: '**/MyProject.csproj'
  - task: DotNetCoreCLI@2
    inputs:
      command: 'test'
      projects: '**/MyProject.Tests.csproj'

构建任务(带有构建命令的 DotNetCoreCLI@2)对于“MyProject.csproj”工作正常,但测试任务(带有测试命令的 DotNetCoreCLI@2)无法找到“MyProject.Tests.csproj”(我知道 '** /MyProject.Tests.csproj' 是不正确的路径)。在构建“MyProject.csproj”后,如何修改 YAML 文件以正确引用和运行“MyProject.Tests.csproj”中的单元测试?

其他详细信息:

  • 两个项目(MyProject 和 MyProject.Tests)都是同一解决方案的一部分。
  • 我正在 MyProject.Tests 中使用 NUnit 进行单元测试。
  • 管道YAML文件位于MyProject的根目录中。
  • 目标是首先构建 MyProject,然后使用 Azure DevOps 管道从 MyProject.Tests 运行单元测试。 任何有关如何构建 YAML 文件或正确引用测试项目的见解或更正将不胜感激!
c# .net unit-testing azure-devops yaml
1个回答
0
投票

在 Azure DevOps Pipeline 中,所有项目文件都将检出到源文件夹:默认情况下

$(Build.sourcesdirectory)

为了确保能够正确找到MyProject.Tests.csproj,您可以将以下路径设置为dotnet测试任务。

projects: '$(build.sourcesdirectory)/**/MyProject.Tests.csproj'

例如:

jobs:
- job: Build and Test
  displayName: Build and Test
  steps:
  - task: DotNetCoreCLI@2
    inputs:
      command: 'build'
      projects: '**/MyProject.csproj'
  - task: DotNetCoreCLI@2
    inputs:
      command: 'test'
      projects: '$(build.sourcesdirectory)/**/MyProject.Tests.csproj'

它将遍历源文件夹中的所有文件以查找匹配的文件。

© www.soinside.com 2019 - 2024. All rights reserved.