首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSTS / VSTest不遵守[ExcludeFromCodeCoverage]

VSTS / VSTest不遵守[ExcludeFromCodeCoverage]
EN

Stack Overflow用户
提问于 2018-09-04 07:15:39
回答 1查看 714关注 0票数 1

我最近刚刚开始使用与VSTS的持续集成,并设置了一个管道,其中包括"Visual“任务。

在任务中,有一个选项可以作为测试的一部分执行代码覆盖扫描。

为了确保我的代码覆盖率仅涵盖我的代码,并创建了一个.RunSettings文件,仅包含我生成的程序集和b),代码中有一些具有[ExcludeFromCodeCoverage]属性的部分。

现在,当从Visual (2017 Enterprise15.7.4)执行Analyze Code Coverage时,一切都如我所料,只有我的程序集被分析,我排除的代码被排除在外。

但是,在运行VSTS管道时,不应用此类限制,所有程序集都会被测试,所有代码(包括特定排除的代码)都会被测试,这将导致代码覆盖率%的显着下降。

不知道从这里往哪里走,所以希望S/O社区能帮上忙。

更新-正在使用的RunSettings文件

代码语言:javascript
复制
<?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>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-05 08:19:07

这里有一个问题:RunSettings文件不在TFS VsTest任务中使用,您可以去查看关于这个问题的讨论。

作为解决办法,您可以使用以下.RunSettings格式(添加UseVerifiableInstrumentation = False)

代码语言:javascript
复制
<?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测试工具安装程序任务。如果使用该任务,则需要将useverifiable属性设置为false,因为在xcopy模式下,我们不对上述dll的Microsoft.VisualStudio.CodeCoverage.Shim进行GAC (这是一个依赖项,需要在useverifiable设置为true时加载) 将此属性标记为false确保它不使用此特定的dll。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52160799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档