为什么当代码覆盖率已启用时,Visual Studio会显示“此测试运行未启用代码覆盖率”?

11
在Visual Studio中,我刚刚创建了一个简单的单元测试以测试我编写的一个方法。我想要检查代码覆盖率,但是代码覆盖窗口总是显示“未在此测试运行中启用代码覆盖”。为什么?注意:
  1. 我已经按照此页面上的说明进行了操作,即测试配置在“代码覆盖率”选项页上已具有相关程序集的复选标记。
  2. 我点击了“运行测试”,而不是某些来源声称会导致此问题的“调试测试”按钮。
  3. 我尝试使用当前构建配置设置为“调试”或“发布”运行测试;两者都无效。
  4. 我还遵循了此页面上的建议(通过选择“测试”=>“选择活动测试运行配置”来重新选择testrunconfig文件),但没有用。
然而,每次运行相关测试时,我仍然会收到消息“未在此测试运行中启用代码覆盖”。我该如何彻底启用代码覆盖?

1
请从线程标题中删除 [Visual Studio],标签用于识别问题,而不是标题。标题应该是问题的摘要,而不是它的上下文。 - Esko
1
我的理解是,VS有两个版本:专业版和企业版,而在专业版中你无法获得代码覆盖率。你有企业版吗? - Ira Baxter
4
你正在使用哪个版本的Visual Studio? - Ricardo Sanchez
5个回答

3

我曾经在很多领域(包括代码覆盖率)上与MSTest进行斗争 - 坦白地说,它并没有尽力让生活变得容易 - 特别是在额外的testrunconfig等方面,这些东西已经复制了csproj中的很多内容。

不管怎样; 然后我发现TestDriven.NET内置了这个功能(只要您有正确的Visual Studio版本来包含MSTest和覆盖范围):

alt text
(来源:mutantdesign.co.uk

这将使用您现有的测试框架(包括MSTest),但它将跳过所有通常需要处理配置才能启用测试覆盖率的步骤。它甚至可以与源代码着色(未测试/已测试等红/蓝色)一起使用。非常方便。

*=指工具本身和GUI集成


2

1
它代表全局程序集缓存。 我不知道你的项目是否使用它,但这只是一种可能性。您可以尝试强制汇编所有内容,删除当前的DLL和对象,然后启用分析构建。 - Asrail

0
如果这是一个C++项目,请确保已启用性能分析。打开您的项目属性 -> 链接 -> 高级。找到Profile并将其设置为启用性能分析信息(/PROFILE)。

0
请确保从“测试视图”或“测试列表”窗口中运行您的测试,而不是从测试结果窗口中运行。从测试结果窗口内重新运行测试并不总是遵循您的测试运行配置设置。

0
在我的情况下,当我遇到这个问题时,在“测试->选择活动测试运行配置”菜单下,我发现“没有可用的测试运行配置”。
我删除/添加了.testrunconfig文件,然后代码覆盖率恢复正常。
(VS2005团队版)

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