unit-testing - 在 Azure DevOps 上,我找不到解释如何将单元测试项目作为 .NET Core 构建管道的一部分自动运行的示例
问题描述
如果需要更多信息,请在评论中告诉我。
Azure DevOps 很容易支持自动化测试,方法是向管道添加一个或多个任务,这可以在推送新提交并自动构建软件后触发。对于 Visual Studio,这通常采用 DevOps 的形式构建您的 Visual Studio 解决方案,然后运行一个或多个测试项目,这些项目很可能是该解决方案的一部分。
我的问题是:似乎没有一个如何实际执行此操作的单一示例。 当我尝试时,我收到此错误:
此任务仅在 Windows 代理上受支持,不能在其他平台上使用。
这是在添加 Visual Studio 测试任务之后。使用最小管道时,解决方案能够很好地构建,并且管道运行正常。当添加一个非常非常基本的任务来运行单元测试时,会返回上面的错误消息。
我尝试四处寻找有关如何设置的明确说明或示例,并且尝试搜索该特定错误。得出的结果根本不是很丰富。
因为其他地方不存在明确的说明,所以我会问:设置 Azure DevOps 管道所需的基本但明确的步骤是什么,该管道将构建使用 .NET Core 的 Visual Studio 解决方案,然后运行测试项目( s) 在里面?
解决方案
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 文档来添加代码覆盖率、测试结果等。
推荐阅读
- python - 需要帮助来提高我使用嵌套循环和 json 文件的 Python 脚本性能
- python - 使用 PyMC3 进行优化
- ruby-on-rails - Rails:表单标签和文本字段的未定义方法错误
- visual-studio-code - 在 VSCode 中使用 ENV 变量启动容器
- javascript - Date('YYYY-MM-DD') 构造一个比指定日期晚一天的日期(Javascript)
- python - 将DataFrame转换为字典,标题为键,列为数组,值
- rcpp - R 包构建错误:'-std=c++11 或 -std=gnu++11 编译器选项'
- java - Java 8 CompletableFuture - 如何在同一输入上运行多个函数
- sql - 将列展平为行
- generics - 是否有一种安全的方法可以为函数的不可变和可变变体重用相同的代码?