【问题标题】:How do I enable Code Coverage for .NET Standard Library (2.0) project in VSTS (CI)如何在 VSTS (CI) 中为 .NET 标准库 (2.0) 项目启用代码覆盖率
【发布时间】:2018-01-14 20:08:33
【问题描述】:

请帮助我 - 如何在 VSTS (CI) 中启用/显示 .NET Standard 库项目 (2.0) 的代码覆盖率结果。已通过dotnet Test task(.NET Core 2.0 预览版)启用测试结果,可以看到通过的测试用例。下一步我添加了“发布结果”任务,但它在构建期间显示以下警告 - 没有找到匹配 _temp*/.trx 的测试结果文件。 甚至我修改了.csproj文件并添加了<DebugType>Full</DebugType>

使用 Visual Studio 2017 Professional(版本 - 15.5.2) 项目 - .NET 标准库 (2.0) 单元测试 - MSTest(Visual Studio 内置)

我需要在 VSTS 的构建定义中添加/修改哪些任务/如何执行任务,以便我可以查看针对单元测试的代码覆盖率。

代码覆盖任务 - TestAssemblies

other option

现在我可以看到代码覆盖率(不确定是否显示正确的代码覆盖率)但是任务 - 测试程序集 ***.test*.dll 失败并出现以下错误 - Code-Coverage-Result

  • ......$(BuildConfiguration)\netcoreapp2.0\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll 中没有可用的测试。确保测试项目具有包“Microsoft.NET.Test.Sdk”的 nuget 引用,并且框架版本设置正确,然后重试。

    • ...... $(BuildConfiguration)\netcoreapp2.0\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.dll 中没有可用的测试。确保测试项目具有包“Microsoft.NET.Test.Sdk”的 nuget 引用,并且框架版本设置正确,然后重试。

谢谢。

问候, 德布

【问题讨论】:

    标签: .net unit-testing azure-devops azure-pipelines azure-pipelines-build-task


    【解决方案1】:

    首先,确保您可以通过 Visual Studio 获得代码覆盖率结果。据我所知,需要企业版(您可以使用 Hosted VS 2017 代理)。

    .Net Core 单元测试项目的代码覆盖率:

    1. <DebugType>Full</DebugType>添加到PreopertyGroup

    示例:

    <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
    
        <IsPackable>false</IsPackable>
        <DebugType>Full</DebugType>
      </PropertyGroup>
    
    1. 安装Microsoft.CodeCoverage package 来测试项目

    其次,您可以通过Visual Studio Test任务运行测试:(

    vstest.console.exe 的路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe

    勾选Code coverage enabled选项

    其他控制台选项:/framework:".NETCoreApp,Version=v2.0")

    【讨论】:

    • 嗨,starian,首先我使用的是 VS Professional 版本。 15.5.2.不使用企业版。如上所述完成了第 1 点和第 2 点。请帮助我如何在 VSTS 中获得代码覆盖率结果;即,我需要在构建定义中添加哪些任务,这些任务将在 .NET 标准库(2.0 版)项目的 VSTS(CI)中构建完成后显示/支持代码覆盖率。谢谢。德布
    • 能否通过Visual Studio得到代码覆盖率结果?根据这篇文章(visualstudio.com/vs/compare),只有企业版支持代码覆盖)。使用 Visual Studio 测试任务(检查我答案的第二点)
    • 我使用的是 VS 专业版,所以无法在本地进行代码覆盖。其次,我遵循了您提到的内容,因为我使用的是 vs 专业版,所以无法找到 vstest.console.exe。所以我想在 VSTS 中启用代码覆盖(VisualStudio.com --> Build --> Build Definition)。请告诉我应该在构建定义中添加哪些任务才能获得 .NET Standard Library 2.0 的代码覆盖率。谢谢。
    • @DebasisGhosh 这是 Visual Studio 测试任务,请查看我的答案中的屏幕截图。您还需要使用 Hosted VS 2017 代理。
    • 感谢您的帮助。现在我收到以下错误,尽管我已经安装了必备软件包并且所有单元测试都在本地 VS 2017 中通过。测试程序集 **.test.dll - 数据收集器“代码覆盖率”消息:无法启动 CodeCoverage.exe。不会收集代码覆盖率。..\release\netcoreapp2.0\Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface.dll 中没有可用的测试。确保测试项目具有包“Microsoft.NET.Test.Sdk”的 nuget 引用,并且框架版本设置正确,然后重试。谢谢 - 黛布
    猜你喜欢
    • 2018-01-11
    • 2018-11-08
    • 2023-03-08
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多