我最近才开始将持续集成与VSTS结合使用,并且已经建立了包括“ Visual Studio测试”任务的管道。
在任务中,可以选择执行代码覆盖率扫描作为测试的一部分。
为确保我的代码覆盖范围仅涵盖我的代码,并已完成以下任务:a)创建一个.RunSettings
文件以仅包含我生成的程序集,并且b)该代码的某些部分带有[ExcludeFromCodeCoverage]
属性
现在,当从Visual Studio(2017 Enterprise,15.7.4)执行Analyze Code Coverage
时,一切都会按我期望的那样工作,只有我的程序集被分析,而我排除的代码被errr排除了。
但是,在运行VSTS管道时,没有应用任何限制,并且测试了所有程序集并测试了所有代码,包括专门排除的代码,这随后导致代码覆盖率%age急剧下降。
不确定从何处去,因此希望S / O社区可以提供帮助。
更新-正在使用RunSettings文件
<?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>
答案 0 :(得分:1)
这里有一个问题:RunSettings file not used in TFS VsTest task,您可以检查有关此问题的讨论。
作为解决方法,您可以使用以下.RunSettings格式(添加UseVerifiableInstrumentation = False
)
<?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>
只需检查 acesiddhu的解释:
您正在使用Visual Studio测试工具安装程序任务 定义。如果使用任务,则可验证属性需要 设置为false是因为在xcopy模式下,我们不对上述dll进行GAC 'Microsoft.VisualStudio.CodeCoverage.Shim(这是一个依赖项, 将useverifiable设置为true时需要加载)
将此属性标记为false可以确保它不使用此特定属性 dll。