大家好,我用Visual Studio在开发一个方案,想为里面的项目加入单元测试。
阶层如下,有 5 个项目,2 个用于测试Project1和Project2:
方案
|
|- Project1 (100 行)
|- Project2 (100 行)
|- Project3 (100 行)
|
|- Project1.UnitTests
|- Project2.UnitTests
我跟随微软的教学,取得此方案的代码覆盖率,并导出为文档:
dotnet tool install dotnet-reportgenerator-globaltool --tool-path tools
dotnet test --test-adapter-path:. --collect:"XPlat Code Coverage"
reportgenerator "-reports:./**/coverage.cobertura.xml" "-targetdir:Reports_Coverage" -reportTypes:TextSummary;
虽然文档有覆盖率,但是计算未将Project3纳入公式中:
谢谢。
您可以使用 coverlet 和 ReportGenerator 这两个工具来计算代码覆盖率。 coverlet 是一个 .NET Core 的开源工具,用于收集代码覆盖率信息,并将其导出为不同的格式,包括 cobertura。 ReportGenerator 是一个报告生成器,可将 cobertura 格式的代码覆盖率数据转换为各种报告格式。
您可以通过以下步骤计算代码覆盖率,包括未经过测试的 Project3:
首先,您需要安装 coverlet 和 ReportGenerator。您可以使用以下命令:
dotnet tool install -g coverlet.console
dotnet tool install -g dotnet-reportgenerator-globaltool
接下来,您需要为 Project3 创建一个单元测试项目。您可以使用以下命令:
dotnet new xunit -o Project3.UnitTests
答案来自 我点评开发社区 https://www.wodianping.com/
然后,您需要将 coverlet 集成到 dotnet test 命令中。您可以使用以下命令:
dotnet test Project1.UnitTests/ Project2.UnitTests/ Project3.UnitTests/ --collect:"XPlat Code Coverage" /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=./TestResults/
这将使用 coverlet 收集代码覆盖率数据,并将其导出为 cobertura 格式,并将结果保存在 ./TestResults/ 文件夹中。
最后,您可以使用 ReportGenerator 来生成覆盖率报告。您可以使用以下命令:
reportgenerator "-reports:./TestResults/coverage.cobertura.xml" "-targetdir:Reports_Coverage" -reportTypes:TextSummary;
这将从 ./TestResults/ 文件夹中读取 cobertura 格式的代码覆盖率数据,并将其转换为文本报告,并将结果保存在 Reports_Coverage 文件夹中。
使用以上方法,您应该能够计算出包括未经过测试的 Project3 的代码覆盖率。