代码之家  ›  专栏  ›  技术社区  ›  harishr

在azure devops门户上查看代码覆盖率报告

  •  0
  • harishr  · 技术社区  · 7 年前

    我正在运行nunit测试(在.net framework 4.5中的项目),作为azure devops构建管道的一部分。

    - task: VSTest@2
      inputs:
        testAssemblyVer2: 'tests/**/*.Tests.dll'
        pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/packages'
        codeCoverageEnabled: true
      displayName: 'NUnit Testing'
    
    - task: PublishCodeCoverageResults@1
      inputs:
        codeCoverageTool: JaCoCo
        summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.xml'
      displayName: 'Publish Code Coverage'
      //        summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.coverage'
    

    但是我看不到报道报告,我看到的都是报道结果的下载链接…

    code coverage download link

    如何将.coverage报告转换为jacoco格式?或者直接以jacoco格式生成报告?

    我看到了一些.NET核心的解决方案( link ,但.NET框架没有

    0 回复  |  直到 7 年前
        1
  •  14
  •   Josh Gust    7 年前

    更新:

    根据对azure devops的发布 Sprint 150

    发布代码覆盖率报告时,不再需要指定HTML文件。

    因此,我的示例中的脚本不再需要直接使用报表生成器工具来创建html报表,并且在发布覆盖率结果时,不需要指定包含这些html报表的目录。

    编辑:


    我发现了一个技巧,可以让.NET框架项目的覆盖率结果显示在 代码覆盖率 Tab和你的想法一样 linked article .

    1. 不要用 VS测试任务 蔚蓝
    2. 安装 Report Generator Coverlet 直接使用工具
    3. 使用 dotnet-vstest 运行测试的命令 被单
    4. 发布生成的报告 报表生成器 覆盖率 格式化覆盖率结果


    不要使用vs测试任务

    运行此任务将允许您使用一个简单的复选框来收集覆盖范围,但是您随后放弃了为 代码覆盖率选项卡

    no VsTest task



    直接安装工具

    使用powershell任务(或类似任务)安装 被单 报表生成器 直接使用工具。这允许您将它们用于 网络核心 .

    "install tools:"
    &dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
    &dotnet tool install coverlet.console --tool-path . --version 1.4.1
    
    


    通过Coverlet使用dotnet vstest

    我的理解是 dotnet test 玩得不好 .NET框架 项目/程序集。但是,我们仍然可以使用 dotnet 命令,我们知道该命令将位于代理计算机上,但我们需要将其用作到达 vstest.console.exe .

    这个 被单 工具,如您链接的文章中所述,将输出覆盖率结果 覆盖率 如果你让它这么做,请格式化。

    &$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
    


    发布结果

    use publish code coverage task



    完整脚本示例

    注: 这个剧本很粗糙,所以用它作为你个人情况的思考练习。

    "install tools:"
    &dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
    &dotnet tool install coverlet.console --tool-path . --version 1.4.1
    
    "`nmake reports dir:"
    mkdir .\reports
    
    "`nrun tests:"
    $unitTestFile = gci -Recurse | ?{ $_.FullName -like "*bin\*UnitTestProject2.dll" }
    Write-Host "`$unitTestFile value: $unitTestFile"
    
    $coverlet = "$pwd\coverlet.exe"
    
    "calling $coverlet for $($unitTestFile.FullName)"
    &$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
    
    "`ngenerate report(s)"
    gci -Recurse | 
        ?{ $_.Name -eq "coverage.cobertura.xml" } | 
        %{ &"$pwd\reportgenerator.exe" "-reports:$($_.FullName)" "-targetdir:reports" "-reporttypes:HTMLInline;HTMLChart" }
    

    如果你在努力找出引号的转义 被单 命令, YOU ARE NOT ALONE . 我用过 echoargs 命令来自 PSCX 很多次我都不想承认,这样我就可以看到到底是什么提供给 .exe 我在打电话。



    结果!!

    ……因为这才是真正重要的

    enter image description here



    enter image description here




    原始答案:


    由于您提到的链接文章安装和使用报表生成器全局工具的方式,我认为您仍然可以遵循这些准则来创建html内联和图表报表类型。

    我不知道这篇文章说的是什么意思或者是如何运作的,

    关键是报告类型:使用htmlinline在azure devops页面上启用输出。 azure devops覆盖率页面显示 索引文件 在网上。

    我理解您可以使用该工具从 XML 覆盖率结果,然后发布覆盖率结果并与 Publish Code Coverage 任务。

    所以你所需要的就是 XML 的格式 覆盖范围 工具。

    我没有让它在直接的powershell中工作,但是你可以按照 Report Generator documentation 编写c实用程序以访问 Coverage.Analysis 图书馆。

        2
  •  0
  •   Mohit Verma    7 年前

    您可以使用azure devops管道中的发布代码覆盖率结果任务来查看jacoco格式的代码覆盖率结果。

    有关安装和配置的详细信息,请查看msdn中的博客

    https://docs.microsoft.com/hi-in/azure/devops/pipelines/tasks/test/publish-code-coverage-results?view=tfs-2015#q--a

    希望有帮助。

    推荐文章