dotnet test同时生成覆盖率与测试报告时重复文件问题求助
解决dotnet test同时生成无重复覆盖率报告与测试报告的问题
你遇到的问题是:执行dotnet test --blame --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./test-results --logger "trx;logfilename=testResults.trx"时,同一项目会在不同前缀文件夹生成多份完全重复的代码覆盖率XML文件;移除--logger参数能得到单个覆盖率报告,但没测试报告;只用--logger又拿不到覆盖率报告。
下面给你两种可行的解决方法:
方法一:修改XPlat Code Coverage收集器参数
在原命令末尾添加强制生成单个报告的配置参数,调整后的完整命令如下:
dotnet test --blame --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage;Format=xml" --results-directory ./test-results --logger "trx;LogFileName=testResults.trx" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.SingleReport=true
SingleReport=true参数会让XPlat收集器只生成一份覆盖率报告,避免重复文件。- 保留
--logger参数,确保trx格式的测试报告正常生成。 - 所有输出文件都会统一存放在
./test-results目录下,覆盖率XML会在该目录的子文件夹中(仅一份),测试报告直接是指定的testResults.trx。
方法二:使用coverlet.msbuild直接控制覆盖率输出
如果你的测试项目已经安装了coverlet.msbuild NuGet包(没装的话先在测试项目里执行dotnet add package coverlet.msbuild),可以用项目属性参数来配置覆盖率,命令如下:
dotnet test --blame --configuration Release --no-build --verbosity normal --logger "trx;LogFileName=testResults.trx" --results-directory ./test-results /p:CollectCoverage=true /p:CoverletOutputFormat=xml /p:CoverletOutput=./test-results/coverage.xml
/p:CollectCoverage=true启用覆盖率收集/p:CoverletOutputFormat=xml指定输出格式为XML/p:CoverletOutput直接指定覆盖率报告的输出路径和文件名,这样不会生成重复文件,且位置更明确--logger参数依然保留,确保测试报告正常生成
这两种方法都能让你同时拿到无重复的代码覆盖率报告和完整的测试报告,你可以根据自己的项目情况选择。
内容的提问来源于stack exchange,提问作者Owen Bayley
相关产品推荐
相关产品推荐

