Visual Studio 2022社区版Fine Code Coverage使用疑问求助
Fine Code Coverage (v1.1.191) RunMsCodeCoverage 设置解析(VS2022社区版)
环境背景
- Visual Studio 2022 社区版
- Fine Code Coverage (FCC) 版本 1.1.191
- 解决方案包含多个xUnit测试项目
- 测试通过Visual Studio测试资源管理器运行(非xUnit测试运行器)
RunMsCodeCoverage 各选项实际行为与要求
1. No
- 实际行为:FCC 采用自身默认的覆盖率收集逻辑,不依赖MS Code Coverage组件,稳定生成覆盖率报告。
- 使用建议:不需要MS Code Coverage特定功能时,选这个最省心。
2. IfInRunSettings
- 文档描述:仅当项目存在配置了MS数据收集器的
runsettings文件时,才处理MS Code Coverage结果。 - 社区版实际行为:即使没有
runsettings文件,依然能正常生成覆盖率输出。 - 原因:社区版里,FCC会自动 fallback 到自身的覆盖率收集逻辑,而非严格卡MS Code Coverage的配置。这个选项在社区版下的实际效果是:优先用MS Code Coverage(如果有配置),没有的话就用FCC自己的逻辑。
3. Yes
- 文档描述:没有
runsettings时,FCC会自动生成配置,使用MS Code Coverage收集数据。 - 社区版实际行为:无
runsettings时没有输出,FCC输出窗口提示No cobertura files for ms code coverage。 - 原因:Visual Studio社区版没有预装完整的MS Code Coverage数据收集组件,没法支持自动生成配置并运行MS Code Coverage的流程。这个选项只有在VS企业版里才能按文档描述工作,因为企业版自带完整的MS Code Coverage工具链。
社区版使用建议
- 追求稳定的话,直接用
No或IfInRunSettings即可。 - 如果一定要用MS Code Coverage功能,需要手动创建
runsettings文件并配置MS数据收集器,再把RunMsCodeCoverage设为Yes或IfInRunSettings。核心配置示例:
<RunSettings> <DataCollectionRunSettings> <DataCollectors> <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=17.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <Configuration> <CodeCoverage> <ModulePaths> <Include> <ModulePath>.*YourProjectAssembly.dll$</ModulePath> </Include> </ModulePaths> </CodeCoverage> </Configuration> </DataCollector> </DataCollectors> </DataCollectionRunSettings> </RunSettings>
内容的提问来源于stack exchange,提问作者wosi
相关产品推荐
相关产品推荐

