首页 > 解决方案 > 在 Azure DevOps 上,我找不到解释如何将单元测试项目作为 .NET Core 构建管道的一部分自动运行的示例

问题描述

如果需要更多信息,请在评论中告诉我。


Azure DevOps 很容易支持自动化测试,方法是向管道添加一个或多个任务,这可以在推送新提交并自动构建软件后触发。对于 Visual Studio,这通常采用 DevOps 的形式构建您的 Visual Studio 解决方案,然后运行一个或多个测试项目,这些项目很可能是该解决方案的一部分。

我的问题是:似乎没有一个如何实际执行此操作的单一示例。 当我尝试时,我收到此错误:

此任务仅在 Windows 代理上受支持,不能在其他平台上使用。

这是在添加 Visual Studio 测试任务之后。使用最小管道时,解决方案能够很好地构建,并且管道运行正常。当添加一个非常非常基本的任务来运行单元测试时,会返回上面的错误消息。

我尝试四处寻找有关如何设置的明确说明或示例,并且尝试搜索该特定错误。得出的结果根本不是很丰富。

因为其他地方不存在明确的说明,所以我会问:设置 Azure DevOps 管道所需的基本但明确的步骤是什么,该管道将构建使用 .NET Core 的 Visual Studio 解决方案,然后运行测试项目( s) 在里面?

标签: unit-testingazure-devopsbuild-pipeline

解决方案


Visual Studio 测试任务需要在 Windows 上运行。看一下这个例子 -pool:vmImage: ubuntuLatest我指定让一台混凝土机器在里面运行我的所有步骤。请参阅Microsoft 托管的默认计算机列表。例如,您可以使用windows-latest让您的 Visual Studio 测试步骤正确运行。

但是,Azure DevOps 引入了一组新的dotnet core CLI 任务来构建和测试 .net 核心应用程序(不需要 Windows 来执行它们)。

我从Scott Hanselman 的博客中找到了非常好的描述。它将使用 .net 核心项目构建、测试和发布您的解决方案。

trigger:
- main

pool:
  vmImage: 'ubuntu-latest'

variables:
  buildConfiguration: 'Release'

steps:

    - task: UseDotNet@2 
      displayName: ".NET Core 3.1.x"
      inputs:
        version: '3.1.x'
        packageType: sdk
    - script: dotnet build --configuration $(buildConfiguration)
      displayName: 'dotnet build $(buildConfiguration)'

    - task: DotNetCoreCLI@2
      displayName: "Test"
      inputs:
        command: test
        projects: '**/*tests/*.csproj'
        arguments: '--configuration $(buildConfiguration)'

    - task: DotNetCoreCLI@2
      displayName: "Publish"
      inputs:
        command: 'publish'
        publishWebProjects: true
        arguments: '-r linux-x64 --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
        zipAfterPublish: true

    - task: PublishBuildArtifacts@1
      displayName: "Upload Artifacts"
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
        artifactName: 'hanselminutes' 

稍后您可以使用官方 MSDN 文档来添加代码覆盖率、测试结果等。


推荐阅读