我正在尝试使用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文件吗?在这方面的任何帮助表示赞赏。
答案 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编译解决方案。