Azure管道-将.coverage转换为xml以生成代码覆盖率报告

时间:2019-05-11 20:20:48

标签: powershell azure-devops azure-pipelines azure-devops-self-hosted-agent

我正在尝试使用C#单元测试(MSTest2)的构建管道生成代码覆盖率报告。可以使用Reportgenerator.exe生成报告,但希望将.xml文件作为输入。我添加了Visual Studio测试任务,该任务已在生成工件中生成了一个.coverage文件。我们可以使用CodeCoverage.exe将.coverage转换为.xml文件。

要在本地进行测试,我已经复制了.coverage文件并在运行时:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Dynamic Code Coverage Tools\amd64>CodeCoverage collect /IIS /session:WebSession /output:'C:\CoverageFiles\test.coverage'

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Dynamic Code Coverage Tools\amd64>CodeCoverage analyze /output:'c:\CoverageFiles\results.xml' 'c:\CoverageFiles\test.coverage'

脚本未引发任何错误,并且也不会生成xml文件。

还有其他方法可以从.coverage文件生成.xml文件吗?在这方面的任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以使用coverlet创建不同格式的覆盖率报告。 Coverlet将由msbuild调用。您可以检查我的azure-pipelines.yml,在这里我结合使用Coverlet和reporgenerator在构建管道中创建代码覆盖率。

部分yml:

- script: |
    echo $(Build.SourcesDirectory)
    cd src\Mwd.Exceptions.Solution
    mkdir $(Build.SourcesDirectory)\results
    dotnet test --logger trx /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura  
    copy Mwd.Exceptions.Test\coverage.cobertura.xml $(Build.SourcesDirectory)\results
    dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.0-rc4
    .\reportgenerator "-reports:$(Build.SourcesDirectory)\results\coverage.cobertura.xml" "-targetdir:$(Build.SourcesDirectory)\results" "-reporttypes:HTMLInline;HTMLChart"

dotnet test --logger trx /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura以cobertura格式创建coverage,这是唯一支持格式构建管道的时间。

.\reportgenerator "-reports:$(Build.SourcesDirectory)\results\coverage.cobertura.xml" "-targetdir:$(Build.SourcesDirectory)\results" "-reporttypes:HTMLInline;HTMLChart"生成报告。

由于coverlet将构建目标添加到msbuild中,因此也应支持通过devenv.exe编译解决方案。