VS2012代码覆盖率仅分析测试dll。

6

我正在尝试在VS2012 Premium中实现代码覆盖率,但遇到了一些问题。

我的C#解决方案有几个不同的项目,但最重要的是要测试和使用NUnit和Rhino Mocks的Kernel.dll和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也没有被包含进来。
问题似乎是它找不到解决方案的其他部分,但我不确定它确切地搜索哪里,或者我需要设置什么才能被找到。
有人遇到过相同的问题吗?有什么想法可以解决它吗?

我有同样的问题,但是是在使用微软提供的测试工具VSTest时出现的。因此,我认为这与NUnit没有任何关系。 - Wilbert
3个回答

1

听起来似乎 NUnit 测试适配器本身存在问题。我在 Visual Studio Gallery 的 Q&A 部分上读到,他们已经修复了与测试适配器和由测试程序集链接的调试程序集有关的错误。这听起来与您的情况相关,因此您可能需要在此处提交错误:https://bugs.launchpad.net/nunit-vs-adapter/+filebug


嗯,好的,那我就这么做吧。顺便说一句,我最终通过安装 NCrunch 来“解决”这个问题,如果你感兴趣的话。 - kreutz

0

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

  • cd "\Team Tools\Dynamic Code Coverage Tools"
  • CodeCoverage.exe analyze /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 至少你不会完全盲目。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接