TFS 2013构建服务器上没有代码覆盖率结果

4
所以我们的TFS 2013构建除了报告代码覆盖率之外都做得很好。我在这里看到了类似的问题,例如TFS 2013 - No Code Coverage Results,但我们已经尝试过建议的修复措施,但没有结果。 更新1 - 我们采取了更多步骤来解决这个问题; 这是完整列表:
- 确保在构建服务器上安装了Visual Studio Ultimate - 尝试将构建定义的"CodeCoverageEnabled"设置为true以及启用了"Code coverage is enabled"设置 - 确保构建正在使用Debug配置,并且正在为要测试的DLL生成PDB - 添加了一个包含正确ModulePath的.runsettings文件(在构建日志中验证模块路径是否被正确解释;如果我们故意格式不正确,则会产生错误) - 检查.runsettings文件 - 将构建定义设置为"Custom"并指向.runsettings文件
构建过程本身没有问题。我们可以在IDE中本地构建项目时获得代码覆盖率结果。在构建服务器上,MSTest和NUnit测试项目都可以正常运行,并且我们按预期看到通过/失败结果。然而,“No Code Coverage Results”消息仍然困扰着我们。 更新2 - 以下是我们在运行日志中看到的内容: Build log test run output 有人在https://dev59.com/zmYq5IYBdhLWcg3wrihD#16198120中建议使用自制代码覆盖率计算器,但是花费150亿万美元购买TFS 2013和VS Ultimate 2013 with MSDN,却仍然没有这个基本功能,真是太可惜了。
4个回答

3

我本以为这肯定会起作用,但出乎意料的是没有。我在问题中添加了我们迄今为止尝试过的摘要。 - Paul Smith
当你说在IDE上工作时,是指在构建服务器上吗?你运行了一个或两个测试运行?一个用于MSTest,一个用于NUnit,然后查看是否获得了MSTest覆盖率。 - Just TFS
不,我只是想说我在Visual Studio中获得了代码覆盖率结果,这可能并不那么相关。我有一个NUnit项目和一个MSTest项目,每个项目只有一个测试。它们都能够在构建服务器上运行并报告成功/失败情况,只是没有代码覆盖率结果。 - Paul Smith
我将测试缩减为单次运行。我尝试了使用指向我的.runsettings文件的“自定义”类型测试运行,以及CodeCoverageEnabled = true。但是代码覆盖率仍然没有成功。这太疯狂了。 - Paul Smith

1
我正在使用带有.runsettings文件的Visual Studio在线本地构建服务器,我遇到了完全相同的问题。
以上任何诡计都没有起作用,因此我在托管的构建控制器上测试了构建脚本,它可以正常工作,因此我决定问题一定是构建服务器本身。
我在TFS配置工具中将“网络服务”构建服务账户更改为“常规Windows用户账户”,现在可以收集代码覆盖率。请注意,此用户需要访问TFS构建目录。

1
我遇到了同样的问题。我的问题出在ModulePath上。MSDN的示例建议您只使用目标二进制文件的名称。但这对我不起作用。然而,当我将名称变成正则表达式时,它起作用了。我还将构建输出倒入一个文件夹,以便找到pdb和其他参考文件。希望这可以帮助到您。
<ModulePath>.*Administration\.dll.*</ModulePath>

0

我发现这个问题是因为我在这篇文章上看到了一些奇怪的东西。 (查找默认为60的“Delay”设置)。

d. 添加一个新参数'Delay',按照下面提到的详细信息输入 名称-Delay,方向-In,ArgumentType-Int32,默认值-60 需要延迟覆盖检查以填写构建代理填写的所需构建详细信息,这种延迟因系统而异,在某些情况下可能根本不需要。

http://www.prowareness.com/blog/failing-build-on-insufficient-code-coverageblock-coverage-part-3/

也许尝试在您正在使用的模板中添加一个“延迟”工作流项……

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