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

时间:2014-10-14 10:43:34

标签: c# visual-studio unit-testing code-coverage pdb-files

在我正在进行的项目中,如果我没有在runsettings文件中明确排除这些,则有两个nuget包包含在代码覆盖中,而其他第三方库不是。

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

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

有没有办法从代码覆盖中排除第三方库?

1 个答案:

答案 0 :(得分:4)

发现您可以使用.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>