Unit testing VSTS/VSTest不符合[ExcludeFromCodeOverage]
我最近刚刚开始使用与VST的持续集成,我已经建立了一个管道,其中包括“VisualStudio测试”任务 在任务中,有一个选项可以作为测试的一部分执行代码覆盖率扫描 为确保我的代码覆盖范围仅覆盖我的代码,请a)创建一个Unit testing VSTS/VSTest不符合[ExcludeFromCodeOverage],unit-testing,continuous-integration,azure-devops,Unit Testing,Continuous Integration,Azure Devops,我最近刚刚开始使用与VST的持续集成,我已经建立了一个管道,其中包括“VisualStudio测试”任务 在任务中,有一个选项可以作为测试的一部分执行代码覆盖率扫描 为确保我的代码覆盖范围仅覆盖我的代码,请a)创建一个.RunSettings文件以仅包括我生成的程序集,b)代码的某些部分具有[ExcludeFromCodeCoverage]属性 现在,当从Visual Studio(2017 Enterprise,15.7.4)执行Analyze code Coverage时,一切都如我所期望的
.RunSettings
文件以仅包括我生成的程序集,b)代码的某些部分具有[ExcludeFromCodeCoverage]
属性
现在,当从Visual Studio(2017 Enterprise,15.7.4)执行Analyze code Coverage
时,一切都如我所期望的那样工作,只有我的程序集得到了分析,我排除的代码被排除了
但是,当VSTS管道运行时,不会应用此类限制,并且会测试所有程序集和所有代码,包括专门排除的代码,这会导致代码覆盖率显著降低%age
我不知道该怎么办,希望S/O社区能提供帮助
更新-正在使用运行设置文件
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- 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>
<ModulePaths>
<Include>
<ModulePath>.*\.dll$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*Tests.dll$</ModulePath>
<ModulePath>.*moq.dll$</ModulePath>
</Exclude>
</ModulePaths>
<UseVerifiableInstrumentation>False</UseVerifiableInstrumentation>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
.\.dll$
*Tests.dll$
*moq.dll$
假的
这里有一个问题:,你可以去查看关于这个问题的讨论
作为一种解决方法,您可以使用以下.RunSettings格式(添加UseVerifiableInstrumentation=False
)
假的
.*\\MyProjectName.\.dll$
*Tests.dll$
只需查看acesiddhu的解释:
您正在您的系统中使用visual studio测试工具安装程序任务
定义。在使用该任务的情况下,需要使用可验证属性
设置为false,因为在xcopy模式下,我们不GAC上面的dll
'Microsoft.VisualStudio.CodeCoverage.Shim(这是一个依赖项
当useverifiable设置为true时需要加载)
将此属性标记为false可确保它不使用此特定属性
dll
好。。我现在已经有了Visual Studio和VSTS CI过程来生成匹配的结果,但仍然存在一些问题。。1.它们仍然包括
[ExcludeFromCodeCoverage]
代码和2。在代码覆盖率的CI生成摘要中,%ag似乎包含来自排除程序集的数据,因此会删除该值。。摘要显示为9.30%,而实际输出显示为14.65%。有趣的是,如果我在Visual Studio中运行代码覆盖率并取消勾选使用RunSettings文件的选项,那么[ExcludeFromCodeOverage]
实际上被排除在外,并将%ag添加到main中的RunSettings增加到17%question@ChrisHammond检查此线程是否有帮助:是的。。。就是那个。。。虽然摘要页面上的%ag与实际测试结果不同。。。谢谢你的帮助,安迪。
<?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>
<UseVerifiableInstrumentation>False</UseVerifiableInstrumentation>
<ModulePaths>
<Include>
<ModulePath>.*\\MyProjectName.*\.dll$</ModulePath>
</Include>
<Exclude>
<ModulePath>.*Tests.dll$</ModulePath>
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>