所以我们的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 - 以下是我们在运行日志中看到的内容:
有人在https://dev59.com/zmYq5IYBdhLWcg3wrihD#16198120中建议使用自制代码覆盖率计算器,但是花费150亿万美元购买TFS 2013和VS Ultimate 2013 with MSDN,却仍然没有这个基本功能,真是太可惜了。
- 确保在构建服务器上安装了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://istack.dev59.com/rWxLM.webp)