You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

代码覆盖率分析器显示自动实现属性的getter未覆盖,是否可忽略?

解决Visual Studio 2015中自动属性get方法未被代码覆盖的问题

这是个在代码覆盖率分析里挺常见的小问题,我给你几个实用的解决方案,你可以根据自己的场景选择:

1. 简单调用get方法凑覆盖率(快速临时方案)

既然你的Report对象要传给其他API,其实可以在传递前“无意义”地读取一下这些属性,比如:

// 为了满足代码覆盖率,显式读取属性
_ = report.Title;
_ = report.Status;
_ = report.Type;

// 然后再传递给API
await otherApi.SendReport(report);

这种方式最直接,虽然看起来没业务逻辑,但能让覆盖率工具识别到get方法被调用过了。记得加个注释说明这是为了覆盖率,避免其他同事疑惑。

2. 配置覆盖率规则忽略自动属性get方法(推荐长期方案)

VS2015支持通过.runsettings文件自定义代码覆盖率的检测规则,我们可以直接排除自动生成的get方法。步骤如下:

  • 在你的测试项目里新建一个XML文件,命名为CodeCoverage.runsettings
  • 把以下内容粘贴进去:
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <Sources>
              <Exclude>
                <!-- 排除所有自动属性的get方法 -->
                <Source>.*get_.*</Source>
              </Exclude>
            </Sources>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>
  • 打开Visual Studio的测试菜单,选择「测试设置」->「选择测试设置文件」,选中刚才创建的.runsettings文件
  • 重新运行单元测试和代码覆盖率分析,get方法的未覆盖提示就会消失了

3. 用特性排除单个属性或整个类的覆盖率检测

如果这个Report类只是个数据传输对象(DTO),确实不需要覆盖这些get方法,可以给它加上[ExcludeFromCodeCoverage]特性:

using System.Diagnostics.CodeAnalysis;

[ExcludeFromCodeCoverage]
public class Report {
    public string Title { get; set; }
    public string Status { get; set; }
    public string Type { get; set; }
}

不过要注意,这个特性会把整个类的所有代码都排除在覆盖率统计之外,如果你需要覆盖set方法的话,就只给单个属性加这个特性就行。

为什么会出现这个问题?

自动实现的属性(比如public string Title { get; set; })在编译时会被编译器转换成带有私有字段的普通属性,生成对应的get_Title和set_Title方法。虽然你只调用了set方法,但代码覆盖率工具会把所有生成的方法都纳入检测范围,所以才会提示get方法未被覆盖。

内容的提问来源于stack exchange,提问作者Ash18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:17:17