6

我试图让代码覆盖在 VS2012 高级版中工作,但我遇到了一些麻烦。

我有一个包含几个不同项目的 C# 解决方案,但最值得注意的是要测试的 Kernel.dll 和使用 NUnit 和 Rhino Mocks 测试的 Kernel.Tests.dll。

使用 NUnit 测试适配器(Beta 2),将测试导入测试资源管理器可以正常工作,运行它们也是如此。但是当涉及到代码覆盖率时,我只从测试 dll 本身得到分析,而不是从被测试的代码中得到分析。这是我不使用 .runsettings 文件的时候。

我还尝试使用 .runsettings 文件(如这里:http: //msdn.microsoft.com/en-us/library/jj159530.aspx)与此规范:

<Include>
    <ModulePath>.*\.dll$</ModulePath>
</Include>

<Exclude>
    <ModulePath>.*\.Tests\.dll$</ModulePath>
</Exclude>

但这只是给了我一个空的结果,因为现在测试 dll 也没有包含在内。

问题似乎是它没有找到解决方案的其他部分,但我不确定它到底在哪里,或者我需要设置什么才能找到它。

有没有人遇到同样的问题?关于如何解决它的任何想法?

4

3 回答 3

1

听起来 NUnit 测试适配器本身可能存在问题。我在 Visual Studio Gallery Q&A 部分读到,他们已经修复了与测试适配器和由测试程序集链接的调试程序集有关的错误。这听起来与我有关,所以你可能想在这里提交一个错误:https ://bugs.launchpad.net/nunit-vs-adapter/+filebug

于 2012-08-24T06:31:00.177 回答
0

这不是 NUnit 测试适配器的问题,而是 Visual Studio 2012 和 TFS 2012 中的代码覆盖率功能的问题。使用ExcludeFromCodeCoverage属性装饰所有测试类,覆盖率计算器将减少噪音。

请参阅博客Visual Studio 2012 RC – 代码覆盖率的新增功能和 MSDN 文章自定义代码覆盖率分析

于 2013-01-03T16:34:09.407 回答
0

我在标准 MSTest 测试中遇到了问题中描述的问题。http://blogs.msdn.com/b/allendm/archive/2012/06/05/troubleshooting-missing-data-in-code-coverage-results.aspx的“进一步分析”部分中的说明提供了更多信息关于问题:

  • cd "\团队工具\动态代码覆盖工具"
  • CodeCoverage.exe 分析 /include_skipped_modules my.coverage > analysis.xml

就我而言,我在 analysis.xml 文件中看到了很多reason="path_is_excluded" 。显然,让 VS 认为您想要排除 DLL 真的很容易。理论上,在问题中描述的部分中添加通配符应该有效。使用我想要覆盖的 DLL 的完全限定路径获得了更好的结果。

这个示例 .runsettings 文件派上用场了:http: //msdn.microsoft.com/en-us/library/jj159530.aspx#sample

此外,首先从命令行运行测试似乎鼓励 Visual Studio UI 做正确的事情。总之,这不是最容易开始工作的过程,但使用 CodeCoverage.exe 至少你不会完全失明。

于 2014-08-07T00:33:22.063 回答