C# 为什么VS2013代码覆盖率在分析单元测试程序集?如何为单元测试禁用它?

C# 为什么VS2013代码覆盖率在分析单元测试程序集?如何为单元测试禁用它?,c#,unit-testing,visual-studio-2013,code-coverage,C#,Unit Testing,Visual Studio 2013,Code Coverage,我不明白为什么代码覆盖率在分析单元测试程序集,正如您在 我认为检查生产代码的覆盖率是有意义的,但不检查单元测试程序集的覆盖率。 请告诉我们这是VS2013中的错误还是其他原因 我找到了关于runsettings的信息,但从testsettings切换将忽略testsettings的部署(在这里,除了目标程序集之外,我还可以指定要部署的测试数据文件和目录) ExcludeFromCodeCoverage属性对于新项目来说很好 但是,如何从VS2010迁移项目呢?这篇MSDN文章可能会对您有所帮助

我不明白为什么代码覆盖率在分析单元测试程序集,正如您在 我认为检查生产代码的覆盖率是有意义的,但不检查单元测试程序集的覆盖率。 请告诉我们这是VS2013中的错误还是其他原因

我找到了关于runsettings的信息,但从testsettings切换将忽略testsettings的部署(在这里,除了目标程序集之外,我还可以指定要部署的测试数据文件和目录)

ExcludeFromCodeCoverage属性对于新项目来说很好
但是,如何从VS2010迁移项目呢?这篇MSDN文章可能会对您有所帮助

特别是文章的包含和排除部分


希望有帮助

这篇MSDN文章可能会对您有所帮助

特别是文章的包含和排除部分


希望有帮助

默认情况下,Visual Studio代码覆盖率工具分析单元测试期间加载的所有解决方案程序集(.exe/.dll)

如果要从代码覆盖率结果中排除测试代码并仅包括应用程序代码,请将
ExcludeFromCodeCoverage
属性添加到测试类中

如果要包括不属于我的解决方案的程序集。获取这些程序集的
.pdb
文件,并将它们复制到与程序集
.dll
文件相同的文件夹中

在.runsettings文件中指定。这是单元测试工具使用的配置文件

排除:

<ModulePaths>
  <Exclude>
   <ModulePath>Fabrikam.Math.UnitTest.dll</ModulePath>
   <!-- Add more ModulePath nodes here. -->
  </Exclude>
</ModulePaths>

Fabrikam.Math.UnitTest.dll
或者,您可以指定应包括哪些程序集。这种方法的缺点是,在向解决方案中添加更多程序集时,必须记住将它们添加到列表中:

<ModulePaths>
  <Include>
   <ModulePath>Fabrikam.Math.dll</ModulePath>
   <!-- Add more ModulePath nodes here. -->
  </Include>
</ModulePaths>

Fabrikam.Math.dll
如果
为空,则代码覆盖率处理包括已加载且可找到其
.pdb
文件的所有程序集(
.dll
.exe
文件),但与
列表中的子句匹配的项目除外。
Include
Exclude
之前处理


希望这能为您节省一些时间

默认情况下,Visual Studio代码覆盖率工具会分析单元测试期间加载的所有解决方案程序集(.exe/.dll)

如果要从代码覆盖率结果中排除测试代码并仅包括应用程序代码,请将
ExcludeFromCodeCoverage
属性添加到测试类中

如果要包括不属于我的解决方案的程序集。获取这些程序集的
.pdb
文件,并将它们复制到与程序集
.dll
文件相同的文件夹中

在.runsettings文件中指定。这是单元测试工具使用的配置文件

排除:

<ModulePaths>
  <Exclude>
   <ModulePath>Fabrikam.Math.UnitTest.dll</ModulePath>
   <!-- Add more ModulePath nodes here. -->
  </Exclude>
</ModulePaths>

Fabrikam.Math.UnitTest.dll
或者,您可以指定应包括哪些程序集。这种方法的缺点是,在向解决方案中添加更多程序集时,必须记住将它们添加到列表中:

<ModulePaths>
  <Include>
   <ModulePath>Fabrikam.Math.dll</ModulePath>
   <!-- Add more ModulePath nodes here. -->
  </Include>
</ModulePaths>

Fabrikam.Math.dll
如果
为空,则代码覆盖率处理包括已加载且可找到其
.pdb
文件的所有程序集(
.dll
.exe
文件),但与
列表中的子句匹配的项目除外。
Include
Exclude
之前处理


希望这能为您节省一些时间

谢谢MikeScott8,但是.runsettings文件的问题是部署如何告诉MSTest包含我的测试数据文件,例如(一些xml数据),所以我无法运行单元测试和分析代码覆盖率,如果单元测试无法获取测试数据,则单元测试将失败,并且无法分析代码覆盖率。如果尝试遵循示例并使用“排除”属性,请确保转义点:^System\.Diagnostics\.DebuggerHiddenAttribute$感谢MikeScott8,但.runsettings文件的问题在于如何让MSTest包含我的测试数据文件,例如(一些xml数据),所以我无法运行单元测试和分析代码覆盖率,如果单元测试无法获取测试数据,则单元测试将失败,并且无法分析代码覆盖率。如果尝试遵循示例并使用“排除”属性,请确保转义点:^System\.Diagnostics\.DebuggerHiddenAttribute$