yanhoguo 2023-03-12 15:13 采纳率: 0%
浏览 7

请教计算C#方案的代码覆盖率时,如何将未被测试覆盖的项目也包括在内?

大家好,我用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纳入公式中:

  • Project1、Project2和Project3各有100行代码,Project1、Project2都经过测试并有100%的覆盖率,而Project3则为0%(没有测试)
  • ReportGenerator给我的总覆盖率是100%(因为Project1和Project2都有100%的覆盖率)
  • 但我期望的是67%的覆盖率(将完全没有写测试的Project3纳入公式中)
    想请教如何取得包括包含无测试的项目的代码覆盖率?

谢谢。

  • 写回答

1条回答 默认 最新

  • 嗷呜大嘴狼 2023-03-12 15:33
    关注

    您可以使用 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 的代码覆盖率。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见