TFS 2013 - 没有代码覆盖率结果

35

我已经搭建了一个 TFS 2013 环境,并尝试在构建完成后让 TFSBuild 收集我的代码覆盖率结果。
测试正常运行,但无论我尝试什么,都会收到“无代码覆盖率结果”的消息。

我已经了解了“代码覆盖率分析服务”,但它根本没有安装在我的服务器上,也找不到它的任何位置。

我按照构建过程进行了操作,确保我将“自动化测试-->测试源-->运行设置-->运行设置类型”设置为 CodeCoverageEnabled,但无论我尝试什么其他方法,我都无法将结果发布到分析服务数据库中,以便我可以运行 代码覆盖率报告

我尝试了运行设置文件,但没有成功,所以我把它排除在外了。

非常感谢您提供任何帮助!


你曾经找到这个问题的解决方案吗?我也遇到了同样的问题。 - LockTar
5个回答

56

我刚刚发现了一个问题,我的代码覆盖率在构建服务器上没有被计算。我通过微软的帮助台找到了问题,并且这只是一个小型的UI漏洞。

复现步骤:

  1. 创建新的构建定义。
  2. 进入构建定义的“过程”选项卡,选择要构建的解决方案文件。
  3. 扩展“自动化测试”部分并展开“测试源”。
  4. 展开“运行设置”,将“运行设置类型”从“默认”更改为“CodeCoverageEnabled”。
  5. 保存构建定义并运行您的构建。
  6. 检查构建结果,注意未计算任何代码覆盖率。

要解决此问题,请使用构建定义的其他界面。

  1. 选择“自动化测试”节点。
  2. 现在,在该行右侧,您会看到一个带有“...”的按钮。点击它,将打开一个对话框。
  3. 点击“编辑”以编辑您的测试源。您将看到启用了代码覆盖率。如果没有,请选择它。
  4. 点击确定,再次点击确定以关闭两个对话框。
  5. 现在保存构建定义并再次运行您的构建。

现在代码覆盖率会被计算!微软的帮助台已将此问题提交给开发团队,并且我猜下一个版本会修复这个小漏洞。但是这个小漏洞让我花了两天多的时间才找到它!


5
该死!尽管我再怎么努力,我只能给这个点赞一次! - Jeff Sheldon
1
你好。在编辑构建定义时,你会看到两个UI界面。在构建定义的“进程”选项卡中,你可以看到白色属性区域,在那里你可以设置所有内容。但是你也可以使用不同的编辑器来设置“自动化测试”部分。我所说的不同编辑器是指一个弹出窗口,你可以通过“自动化测试”行右侧的“...”按钮打开它。首先选择该行以查看按钮。如果你在弹出窗口中更改设置,然后在弹出窗口中保存(点击“确定”),则设置将在白色属性区域中进行调整。希望这对你有所帮助... - LockTar
1
刚在更新4上遇到了同样的问题(修复仍然有效) - PeterI
1
好的,这应该可以工作。很多用户都让它工作了。给我发私信,我会尽力帮助你。 - LockTar
2
@ken2k(和其他遇到问题的人),这里有一张截图显示了能够启用代码覆盖率的编辑器。感谢 Ralph 发布这个解决方法! - David Peters
显示剩余9条评论

4

您的构建机上安装了高级版或旗舰版的Visual Studio吗?这两个版本中的任意一个都是将代码覆盖率结果返回到TFS所必需的。


0

以上的解决方法对我没有用(VS2015更新5和TFS2013更新3)。

在我的情况下,似乎需要在构建服务器上安装Visual Studio才能返回代码覆盖率结果。

来自MSDN

以下场景需要在构建服务器上安装Microsoft Visual Studio:

  • 要构建任何CPP测试项目,必须安装Visual Studio Professional或更高版本。
  • 要运行单元测试或编码UI测试,必须安装Visual Studio Professional或更高版本。
  • 要使用数据和诊断数据适配器:

    - 代码覆盖率:需要Visual Studio Premium或更高版本。
    - 测试影响:需要Visual Studio Ultimate。
    - IntelliTrace:需要Visual Studio Ultimate。
    
  • 要在构建机上构建任何现代风格的应用程序:需要Visual Studio Ultimate或Visual Studio Express for Windows 8(构建服务器上的操作系统必须是Windows 8)。

  • 对于带有虚假程序集的项目,编译并运行测试所需的版本是Visual Studio Ultimate。

0
我认为“其他窗口”是指右键单击解决方案的“Local.testsettings”文件(或其他[].testsettings文件),选择“打开”,并浏览各种设置。当您将“测试运行位置”单选按钮设置为“使用本地计算机或测试控制器运行测试”时,在“数据和诊断”下有一个“代码覆盖(Visual Studio 2010)”的设置。

".testsettings已被弃用,.runsettings是未来的方向。" - Alan

0

我正在使用具有 .runsettings 文件的 Visual Studio 在线本地构建服务器,并且遇到了完全相同的问题。

上面的任何诡计都没有起作用,因此我在托管的构建控制器上测试了构建脚本,它运行良好,所以我决定问题必须是构建服务器本身。

我在 TFS 配置工具中将 构建服务账户 从“Network Service”更改为常规 Windows 用户账户,现在收集代码覆盖率。请注意,此用户需要访问 TFS 构建目录。


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