我的解决方案是使用名为"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似乎建议我可以.
在为包含多个项目的解决方案运行代码覆盖时,我注意到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