代码覆盖率在TFS构建中无法正常工作

12
我已经在TFS的项目构建定义中启用了代码覆盖率。 enter image description here 构建进展顺利,单元测试也正在运行,但是代码覆盖率显示“没有可用的构建覆盖数据”,请参见下面的屏幕截图。

enter image description here

任何帮助都受到赞赏。

抱歉如果这对您来说是一个愚蠢的问题。但是您没有提到您的许可证版本。据我所知,MS Code Coverage仅适用于VS/TFS的企业版。我总是觉得很困惑,因为该功能可以被勾选,但在专业版中不显示结果。 - Robert K
@RobertK 感谢您的反馈。我们的 TFS 版本是“Team Foundation Server 2015”。我不认为我们有 TFS 的企业版。 - mahfuz01
2
我认为TFS上没有专业/企业版。但是它需要至少一个Visual Studio企业版在其构建代理上。 为了克服这个问题,我正在使用开源替代品OpenCover。 并且我编写了一个小的“学习项目”来将其与TFS 2015集成。如果您有兴趣,请尝试一下并/或加入我:https://github.com/RobertK66/vsts-opencover - Robert K
@RobertK,非常感谢您的提议。我一有空就会尝试一下。 :-) - mahfuz01
@mahfuz01 - 我也有完全相同的问题。你找到解决方案了吗? - Igor
3个回答

7
覆盖率结果只是一个带有*.coverage扩展名的文件。
因此,仅启用Code Coverage Enabled复选框不足够。 此复选框会启用代码覆盖率计算并生成此文件。
但是,要将此*.coverage文件附加到构建中,您还需要在Reporting Options部分下启用Upload Test Attachments复选框。 请参见附图。 Reporting Options: Upload Test Attachments 此复选框可以实现您需要的功能,它将发布覆盖率结果与构建一起。
最终日志应该类似于以下内容:
2016-10-17T15:47:03.6834453Z Attachments:
2016-10-17T15:47:03.6834453Z   TFSBUILD 2016-10-17 11_46_53.coverage 
2016-10-17T15:47:03.6834453Z Total tests: Passed: Failed: Skipped:
2016-10-17T15:47:03.6834453Z Test Run Successful.

5

在我的测试中,代码覆盖率已按预期可用。我想分享一下我的步骤供您参考:

  1. 创建默认的Visual Studio模板。

  2. Visual Studio Build任务中指定Solution,并在Visual Studio Test任务中勾选Code Coverage Enabled。请参考以下截图:

enter image description here

enter image description here

其他设置不需要更改。

  1. 排队构建,然后可以在构建摘要中看到代码覆盖率显示:

enter image description here

顺便说一下,我正在使用TFS 2015 Update2。


2
嗨@cece-msft,这正是我为我的项目所做的。指定了解决方案路径,甚至选择了test.dll运行。我发现测试必须是MSTest而不是nUnit或xUnit测试。我还将所有测试转换为MSTest。仍然没有运气。有点令人沮丧。 - mahfuz01
你正在测试什么样的项目?代码覆盖率启用仅支持 .net 和 C++ 项目。你可以尝试创建一个轻量级项目来测试此功能。 - Cece Dong - MSFT
嗨@cece-msft,我的解决方案是一个MVC 4.5 Web应用程序,但单元测试是在业务层(类库)完成的。我认为这不是代码覆盖率的问题,因为我可以使用resharper来获取代码覆盖率,但项目经理也想在tfs web视图上查看它。 - mahfuz01

0
问题可以通过勾选两个复选框来解决,如图片所示。仅启用代码覆盖率是不够的,您还需要在测试模板中勾选上传测试附件。

在此输入图片描述


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