使用 nugget coverlet.msbuild / 2.3.1 对 azure devops 进行单元测试时出现错误 运行

Error running unit tests on azure devops with nugget coverlet.msbuild / 2.3.1

当我 运行 dotnet 测试任务时,测试 运行 正确但是当以 xml 格式生成报告文件时,我收到以下错误:

/home/adminuser/.nuget/packages/coverlet.msbuild/2.3.1/build/netstandard2.0/coverlet.msbuild.targets(17,5): error : Method not found: 'Void System.IO.FileStream..ctor(System.String, System.IO.FileMode, System.IO.FileAccess, System.IO.FileShare)'.

项目配置文件(.csproj)如下:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="coverlet.msbuild" Version="2.3.1">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
    <PackageReference Include="MSTest.TestAdapter" Version="2.1.2" />
    <PackageReference Include="MSTest.TestFramework" Version="2.1.2" />
    <PackageReference Include="NSubstitute" Version="4.2.2" />
  </ItemGroup>

</Project>

注: 管道 运行 正常,但时不时开始产生以下错误

您正在使用自托管代理 运行 管道,因此该命令应在您的本地环境中执行。您可以尝试以下步骤来解决问题:

1.Clean the package cache,再次删除bin and obj folder和运行 dotnet test 命令。

2.Update coverlet.msbuild 包从 2.3.1 到最新的 2.9.0。

另外:

要生成 xml 报告(coverage.cobertura.xml): 你应该使用 coverlet.collector 包和命令 dotnet test --collect:"XPlat Code Coverage".

要生成 json 报告(coverage.json):您应该使用 coverlet.msbuild 包和命令 dotnet test /p:CollectCoverage=true

查看更多详情coverlet-coverage/coverlet