Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码覆盖率使第三方代码受到覆盖_C#_Visual Studio_Unit Testing_Code Coverage_Pdb Files - Fatal编程技术网

C# 代码覆盖率使第三方代码受到覆盖

C# 代码覆盖率使第三方代码受到覆盖,c#,visual-studio,unit-testing,code-coverage,pdb-files,C#,Visual Studio,Unit Testing,Code Coverage,Pdb Files,在我正在处理的一个项目中,如果我没有在runsettings文件中明确排除这两个nuget包,那么代码覆盖率中包含了两个nuget包,而其他第三方库则没有 这似乎是因为有问题的包在构建时在单元测试项目的bin文件夹中生成了一个PDB文件 为什么有些包有PDB文件,而其他包没有?有没有办法在没有PDB的情况下获得NuGet包 是否有办法将第三方库从代码覆盖范围中排除?发现可以使用.runsettings文件排除库 这些可在TFS生成定义中使用,或在Visual Studio中通过设置: 测试>测试

在我正在处理的一个项目中,如果我没有在runsettings文件中明确排除这两个nuget包,那么代码覆盖率中包含了两个nuget包,而其他第三方库则没有

这似乎是因为有问题的包在构建时在单元测试项目的bin文件夹中生成了一个PDB文件

为什么有些包有PDB文件,而其他包没有?有没有办法在没有PDB的情况下获得NuGet包

是否有办法将第三方库从代码覆盖范围中排除?

发现可以使用.runsettings文件排除库

这些可在TFS生成定义中使用,或在Visual Studio中通过设置:

测试>测试设置>选择测试设置文件

排除库的runsettings文件示例如下:

<?xml version="1.0" encoding="utf-8"?>
<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>
            <ModulePaths>
              <Include>
                <ModulePath>.*Namespace.*.dll$</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*fluentassertions.*</ModulePath>
                <ModulePath>.*htmlagilitypack.*</ModulePath>
              </Exclude>
            </ModulePaths>
            <Attributes>
              <Exclude>
                <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
              </Exclude>
            </Attributes>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>
发现可以使用.runsettings文件排除库

这些可在TFS生成定义中使用,或在Visual Studio中通过设置:

测试>测试设置>选择测试设置文件

排除库的runsettings文件示例如下:

<?xml version="1.0" encoding="utf-8"?>
<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>
            <ModulePaths>
              <Include>
                <ModulePath>.*Namespace.*.dll$</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*fluentassertions.*</ModulePath>
                <ModulePath>.*htmlagilitypack.*</ModulePath>
              </Exclude>
            </ModulePaths>
            <Attributes>
              <Exclude>
                <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
              </Exclude>
            </Attributes>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

如果你不想检测这些PDB的覆盖率,你就不能删除或重命名它们吗?Nuget软件包不生成文件,它们包含这些文件。如果开发人员决定在给定的包中分发PDB文件,您就会得到这样的结果。正如你所说,你可以排除它们,你想解决什么问题?@500 InternalServerError绝对错误,但当测试项目在一组测试运行之前构建时,它们会被重新创建…@BenRobinson在项目中我们测量代码覆盖率,不要问为什么,可以说这些会弄乱统计数据。我不希望这成为每个nuget包添加的额外任务。知道它们是否包含在包中是件好事。现在我知道运行设置文件可能是实现这一点的唯一方法。你应该认真地重新考虑你问题的标题。请注意,你在作业结束时提出的问题根本不是标题所暗示的。你也似乎在问两个问题,所以我也会考虑把你的问题分成两个。如果你不想对这些数据进行覆盖检测,你就不能删除或重命名这些PDB吗?NuGET包不生成文件,它们包含它们。如果开发人员决定在给定的包中分发PDB文件,您就会得到这样的结果。正如你所说,你可以排除它们,你想解决什么问题?@500 InternalServerError绝对错误,但当测试项目在一组测试运行之前构建时,它们会被重新创建…@BenRobinson在项目中我们测量代码覆盖率,不要问为什么,可以说这些会弄乱统计数据。我不希望这成为每个nuget包添加的额外任务。知道它们是否包含在包中是件好事。现在我知道运行设置文件可能是实现这一点的唯一方法。你应该认真地重新考虑你问题的标题。请注意,你在作业结束时提出的问题根本不是标题所暗示的。你似乎也在问两个问题,所以我也会考虑把你的问题分成两个问题。