【问题标题】:Brackets are not included as Code Coverage for Unit Tests c# in VSO括号不包含在 VSO 中单元测试 c# 的代码覆盖范围内
【发布时间】:2020-10-28 07:15:51
【问题描述】:

VSO 构建管道和 Visual Studio 本地之间存在一些代码覆盖率不一致。我们发现 Visual Studio 中的代码覆盖率更高,因为它将括号计为代码覆盖率的一部分。但由于某种原因,它不计入 VSO 构建管道。有谁知道为什么?这是 VSO 中的已知错误吗?

我们使用 Xunit 和 c# 进行测试,并使用 test.runsettings 排除代码。下面是 test.runsettings 文件

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations that affect the Test Framework -->
  <RunConfiguration>
    <!-- Path relative to directory that contains .runsettings file-->
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x64</TargetPlatform>
    <MaxCpuCount>10000</MaxCpuCount>
  </RunConfiguration>

  <!-- Configurations for data collectors -->
  <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>
     <Attributes>
              <Exclude>
                <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
              </Exclude>
            </Attributes>
            <ModulePaths>
             <Exclude>
                <ModulePath>.*unittests.dll$</ModulePath>
                <ModulePath>.*integrationtests.dll$</ModulePath>
                <ModulePath>.*xunit.*.dll</ModulePath>
                <ModulePath>.*fluentassertions.*$</ModulePath>
                <ModulePath>.*moq.*$</ModulePath>
                <ModulePath>.*telemetry.extensions.ai.netcore.*$</ModulePath>
                <ModulePath>.*newtonsoft.*$</ModulePath>
                <ModulePath>.*codeanalysis.*$</ModulePath>
              </Exclude>
            </ModulePaths>

            <!-- 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>

【问题讨论】:

  • 您在本地和 DevOps 中使用相同的测试适配器吗?您能否分享一下您是如何配置 DevOps 管道的?另外,你能分享一下 VS 和 DevOps 的详细日志吗?如果可能,请提供一个示例项目,以便我们重现您的场景。
  • 这个问题有什么更新吗?
  • @CeceDong-MSFT 谢谢,我将在下面更新我的答案。问题已解决。

标签: visual-studio unit-testing azure-devops azure-pipelines xunit


【解决方案1】:

它显示不一致的代码覆盖率的原因是因为在 Visual Studio 中,我运行的是调试模式而不是发布模式。改成Release模式后,编号与VSO编号一致。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-06-11
  • 2011-07-26
  • 1970-01-01
  • 2020-10-05
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多