测试执行命令行工具的 Fixate 版本

Jul*_*ian 5 azure-devops dotnet-test .net-6.0

Microsoft (R) 测试执行命令行工具版本 17.4.0存在错误,我们喜欢使用 17.3.1。

我们正在dotnet testAzure Pipeline 中执行以下操作:

- task: UseDotNet@2
  displayName: 'Use .NET 6'
  inputs:
    packageType: 'sdk'
    version: '6.0.x'

# build tasks etc.

- task: DotNetCoreCLI@2
  displayName: Run Unit Tests
  inputs:
    command: 'test'
    projects: '$(testProjects)'
    # ... more config
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,这有时给我们 17.4.0,有时为 17.3.1 - 即使使用相同的代码(重建相同的提交)。这可能是因为我们的构建代理与其他团队共享。

有没有办法强制测试执行命令行工具版本为 17.3.1 ?

背景信息

有关该问题,请参阅microsoft/vstest - 问题 #4140 - 17.4.0 破坏管道代码覆盖率

Kev*_*SFT 2

对于管道代码覆盖率的问题,问题的原因是.Net7和测试工具版本17.4.0存在已知问题。有关更详细的信息,您可以参考此 Github 票证:dotnet test does not Forward MSBuild properties to msbuild in .NET 7 RC1

有没有办法强制测试执行命令行工具版本为 17.3.1?

是的。您可以通过添加 dotnet 测试参数强制版本 17.3.1:-p:VSTestConsolePath=localpath

这是一个例子:

- task: DotNetCoreCLI@2
  displayName: Test
  inputs:
    command: test
    projects: '**/The.Tests.csproj'
    arguments: '-p:VSTestConsolePath="C:\Users\VssAdministrator\.nuget\packages\microsoft.testplatform.portable\17.3.1\tools\netcoreapp2.1\vstest.console.dll"  /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura  /p:CoverletOutput=./coverage.cobertura.xml"'
Run Code Online (Sandbox Code Playgroud)

注意:您需要Microsoft.TestPlatform.Portable:17.3.1在运行 dotnet 测试之前安装该软件包。

另一方面,测试平台团队确认与测试工具 17.4.0 相关的问题将在 12 月的时间内得到解决