相关疑难解决方法(0)

如何从VS2012单元测试中的代码覆盖率分析中排除名称以".Test"结尾的项目

我的解决方案是使用名为"ProjectName"的项目和"ProjectName"设置的.包含我的单元测试的测试.我想从VS 2012(MS测试)下的代码覆盖分析排除测试项目,并已成功地管理通过将做到这一点ExcludeFromCodeCoverage的描述属性每个测试类在这里.

随着测试类数量的增加,排除整个测试程序集会很不错.我想使用MSDN链接中描述的.runsettings文件但似乎没有任何运气.

这是我的.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>
              <Exclude>
                <ModulePath>.*tests.*</ModulePath>
                <ModulePath>.*Tests.*</ModulePath>>
              </Exclude>
            </ModulePaths>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>
Run Code Online (Sandbox Code Playgroud)

这导致为代码覆盖率生成空结果,如果我注释掉整个<Exclude>块,我会在所有解决方案的项目中获得代码覆盖率,包括测试(正如预期的那样,我只是想确保添加runSettings文件不会导致问题本身).

我试过加入:

<Include>
  <ModulePath>.*\.dll$</ModulePath>
  <ModulePath>.*\.exe$</ModulePath>
</Include>
Run Code Online (Sandbox Code Playgroud)

但同样,我得到空结果.我的印象是,一个空的(或不存在的)Include块将默认包含所有内容,除非与Exclude块匹配,所以我不认为这是严格要求的.

谁能指出我正确的方向?我从另一个问题中看到,我并不是唯一一个试图排除测试的人,但我想在汇编级别进行,MSDN似乎建议我可以.

tdd unit-testing visual-studio visual-studio-2012

28
推荐指数
1
解决办法
2万
查看次数

使用.runsettings从代码覆盖率中排除程序集

在为包含多个项目的解决方案运行代码覆盖时,我注意到Code Coverage还包括我的测试程序集.

我发现了一篇文章,建议使用.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>
                <!-- Do not specify any includes. This will attempt to include all binaries -->
              </Include>
              <Exclude>
                <!-- Exclude modules that aren't to be processed, by their name / path -->
                <ModulePath>.*Tests\.dll$</ModulePath> <!-- I put it here -->
              </Exclude>
            </ModulePaths>

            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>
            <!--
Additional paths to search for symbol files. Symbols must be found for modules to …
Run Code Online (Sandbox Code Playgroud)

.net unit-testing code-coverage visual-studio vs-unit-testing-framework

18
推荐指数
3
解决办法
2万
查看次数