C# 代码覆盖率使第三方代码受到覆盖
在我正在处理的一个项目中,如果我没有在runsettings文件中明确排除这两个nuget包,那么代码覆盖率中包含了两个nuget包,而其他第三方库则没有 这似乎是因为有问题的包在构建时在单元测试项目的bin文件夹中生成了一个PDB文件 为什么有些包有PDB文件,而其他包没有?有没有办法在没有PDB的情况下获得NuGet包 是否有办法将第三方库从代码覆盖范围中排除?发现可以使用.runsettings文件排除库 这些可在TFS生成定义中使用,或在Visual Studio中通过设置: 测试>测试设置>选择测试设置文件 排除库的runsettings文件示例如下: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中通过设置: 测试>测试
<?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包添加的额外任务。知道它们是否包含在包中是件好事。现在我知道运行设置文件可能是实现这一点的唯一方法。你应该认真地重新考虑你问题的标题。请注意,你在作业结束时提出的问题根本不是标题所暗示的。你似乎也在问两个问题,所以我也会考虑把你的问题分成两个问题。