【问题标题】:Async methods not included in Code Coverage when using .runsettings file使用 .runsettings 文件时,代码覆盖率中不包含异步方法
【发布时间】:2015-12-11 04:28:29
【问题描述】:

每当我在我的解决方案上运行 Visual Studio 2015 代码覆盖率时 没有指定测试设置文件,我测试过的所有 Async 方法都包含在覆盖率结果中并适当着色: p>

但是,当我包含 .runsettings 文件时,异步方法不再包含在 Coverage 结果中并且保持无色:

据我所知,.runsettings 文件中没有任何内容会忽略异步方法:

<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>

            <!-- Match assembly file paths: -->
            <ModulePaths>
              <Exclude>
                <ModulePath>.*xunit.*</ModulePath>
              </Exclude>
            </ModulePaths>
            <!-- Match attributes on any code element: -->
            <Attributes>
              <Exclude>
                <!-- Don't forget "Attribute" at the end of the name -->

                <Attribute>^System\.Diagnostics\.DebuggerHiddenAttribute$</Attribute>
                <Attribute>^System\.Diagnostics\.DebuggerNonUserCodeAttribute$</Attribute>
                <Attribute>^System\.Runtime\.CompilerServices.CompilerGeneratedAttribute$</Attribute>
                <Attribute>^System\.CodeDom\.Compiler.GeneratedCodeAttribute$</Attribute>
                <Attribute>^System\.Diagnostics\.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
              </Exclude>
            </Attributes>

            <!-- We recommend you do not change the following values: -->
            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>

          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

我是否从我的 .runsettings 文件中遗漏了一些东西来完成这项工作?

【问题讨论】:

    标签: c# unit-testing asynchronous code-coverage


    【解决方案1】:

    结果出来了

    &lt;Attribute&gt;^System\.Runtime\.CompilerServices.CompilerGeneratedAttribute$&lt;/Attribute&gt;

    导致异步方法未包含在代码覆盖范围内。

    【讨论】:

    • 不幸的是,我发现从排除列表中删除该行确实不是解决问题的好方法。虽然它确实为您提供了异步方法的覆盖范围,但它也为您提供了许多其他垃圾类/方法的覆盖范围,并且确实使结果变得混乱。我不认为有人在其间的一年中提出了部分解决方案,可以让我们只覆盖我们实际编写的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多