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

C# VS2012代码覆盖率仅分析测试dll,c#,visual-studio-2012,C#,Visual Studio 2012,我试图让代码覆盖率在VS2012 premium中工作,但遇到了一些问题 我有一个带有几个不同项目的C#解决方案,但最显著的是要测试的Kernel.dll和使用NUnit和Rhino mock进行测试的Kernel.Tests.dll 使用NUnit测试适配器(Beta 2),将测试放入测试资源管理器工作正常,运行测试也是如此。但是当涉及到代码覆盖率时,我只从测试dll本身获得分析,而不是测试的代码。这是我不使用.runsettings文件的时候 我还尝试将.runsettings文件(如此处:

我试图让代码覆盖率在VS2012 premium中工作,但遇到了一些问题

我有一个带有几个不同项目的C#解决方案,但最显著的是要测试的Kernel.dll和使用NUnit和Rhino mock进行测试的Kernel.Tests.dll

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

我还尝试将.runsettings文件(如此处:)与以下规范一起使用:

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

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

.\.dll$
.\.Tests\.dll$
但是这只是给了我一个空的结果,因为现在测试dll也没有被包括在内

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


有人遇到过同样的问题吗?关于如何修复它有什么想法吗?

听起来NUnit测试适配器本身可能有问题。我在VisualStudioGallery的问答部分中读到,他们已经修复了测试适配器的bug,并调试了由测试程序集链接的程序集。这听起来与我有关,所以您可能想在这里提交一个bug:

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


请参阅博客和MSDN文章。

我在标准MSTest测试中遇到了问题中描述的问题。的“进一步分析”部分中的说明提供了有关问题的更多信息:

  • cd“\Team Tools\Dynamic Code Coverage Tools”
  • CodeCoverage.exe analyze/include_跳过的_模块my.coverage>analysis.xml
在我的例子中,我在analysis.xml文件中看到了很多reason=“path\u被排除在外”。显然,很容易让VS认为您想要排除DLL。理论上,在问题中描述的部分中添加通配符应该是可行的。我使用我想要覆盖的DLL的完全限定路径获得了更好的结果

此示例.runsettings文件很方便:


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

嗯,好吧,那我应该这样做。出于好奇,我最终通过安装NCrunch“解决”了这个问题。我也有同样的问题,但VSTest,也就是说,使用微软提供的测试设备。因此,我认为这与NUnit毫无关系。