2016-04-27 43 views
9

我已经在TFS中的项目的构建定义中启用了代码覆盖。 enter image description here代码覆盖不起作用TFS构建

它按预期构建,单元测试也在运行,但代码覆盖显示“No build coverage data available”参见下面的截图。

enter image description here

任何帮助表示赞赏。

+0

很抱歉,如果这是给你一个愚蠢的问题。但是你没有提到你的许可证版本。据我了解,MS代码覆盖仅适用于VS/TFS的企业版本。我总是觉得这个功能可以打勾,但在专业版中没有显示任何结果,这让人感到非常困惑。 –

+0

@RobertK感谢您的反馈。我们的TFS版本显示“Team Foundation Server 2015”。我认为我们没有TFS的企业版。 – mahfuz01

+2

我认为TFS上没有专业/企业风味。但它的构建代理至少需要一个Visual Studio企业版。 为了克服这个问题,我使用了开源替代[OpenCover](https://github.com/OpenCover/opencover)。 我写了一个小型的“学习项目”,将其与TFS 2015集成。如果您有兴趣,请尝试和/或加入我;-):https://github.com/RobertK66/vsts-opencover –

回答

2

只需测试一下,代码覆盖率可按预期提供。我想分享我的步骤,供大家参考:

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

  2. 指定解决方案Visual Studio Build任务,并检查代码覆盖率在Visual Studio Test任务启用。见下面的截图:

enter image description here

enter image description here

其他设置并不会改变。

  • 队列构建,然后我可以看到代码覆盖显示了构建的总结:
  • enter image description here

    顺便说,我使用TFS 2015 UPDATE2 。

    +2

    Hi @ cece-msft这正是我为我的项目所做的。指定解决方案路径,甚至选择test.dll运行。我发现某处测试必须是MSTest而不是nUnit或xUnit测试。我也已将所有测试转换为MSTest。仍然没有运气。它有点令人沮丧 – mahfuz01

    +0

    你正在测试什么样的项目?代码覆盖已启用仅支持.net和C++项目。您可以尝试创建一个轻型项目来测试此功能。 –

    +0

    嗨@ cece-msft我的解决方案是一个MVC 4.5 Web应用程序,但单元测试是在业务层(类库)上完成的。我不认为它是代码覆盖的问题,因为我可以使用resharper来获得代码覆盖范围,但项目经理也希望在tfs web视图中查看它。 – mahfuz01

    5

    覆盖结果只是一个扩展名为*.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.