我正在努力让代码覆盖率在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也没有被包括在内。
问题似乎是它没有找到解决方案的其他部分,但我不确定它的确切位置,或者我需要设置它才能找到它。
有没有人遇到同样的问题?关于如何解决它的任何想法?
答案 0 :(得分:1)
听起来NUnit测试适配器本身可能存在问题。我在Visual Studio Gallery Q&amp; A部分读到,他们已经修复了与测试程序集链接的测试适配器和调试程序集有关的错误。这听起来与我有关,所以你可能想在这里提交一个错误:https://bugs.launchpad.net/nunit-vs-adapter/+filebug
答案 1 :(得分:0)
这不是NUnit测试适配器的问题,而是Visual Studio 2012和TFS 2012中的代码覆盖功能。使用ExcludeFromCodeCoverage
属性装饰所有测试类,覆盖率计算器将降低噪音。
请参阅博客Visual Studio 2012 RC – What’s new in Code Coverage和MSDN文章Customizing Code Coverage Analysis。
答案 2 :(得分:0)
我遇到了标准MSTest测试问题中描述的问题。 http://blogs.msdn.com/b/allendm/archive/2012/06/05/troubleshooting-missing-data-in-code-coverage-results.aspx的“进一步分析”部分中的说明提供了有关该问题的更多信息:
在我的情况下,我在analyze.xml文件中看到了很多 reason =“path_is_excluded”。显然,让VS认为你想要排除DLL真的很容易。理论上,在问题中描述的部分中添加通配符应该有效。使用我希望覆盖的DLL的完全限定路径,我得到了更好的结果。
此示例.runsettings文件派上用场:http://msdn.microsoft.com/en-us/library/jj159530.aspx#sample
此外,首先从命令行运行测试似乎鼓励Visual Studio UI做正确的事情。总而言之,这不是最简单的工作过程,但至少使用CodeCoverage.exe,你不会完全失明。