【问题标题】:Any Way to Publish Test Coverage Result back to TFS Server?有什么方法可以将测试覆盖结果发布回 TFS 服务器?
【发布时间】:2015-12-04 18:20:48
【问题描述】:

为了将测试分发到不同的机器(远程方式),我们必须使用 .testsettings 文件。在这样的文件中,我们已经配置为通过以下方式收集测试覆盖率数据:

<DataCollectors>
    <DataCollector uri="datacollector://microsoft/CodeCoverage/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.CodeCoverage.CoveragePlugIn, Microsoft.VisualStudio.QualityTools.Plugins.CodeCoverage, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Code Coverage (Visual Studio 2010)">
      <Configuration>
        <CodeCoverage keyFile="xxx.snk" xmlns="">
          <Regular>
            <CodeCoverageItem binaryFile="xxx.dll" pdbFile="xxx.pdb" instrumentInPlace="true" />

但问题是测试覆盖率数据从未发布回 TFS 服务器。在诊断构建过程时,测试结果已经可以根据构建日志发布:

Results file:  d:\Builds\xxxx.trx 
Test Settings: xxx
Waiting to publish...
Publishing results of test run xxx.trx to https://tfs.xxx/tfs/xxx...
Publish completed successfully.

覆盖数据似乎不在 xxx.trx 文件中,而且构建不够智能,无法分配和发布它们。所以从构建摘要中我们可以看到:

23 modules instrumented - 0% of all code blocks covered

有没有办法通过一些 TFS API 或编码活动手动发布此类数据或将测试覆盖率结果写回 TFS 服务器?

[更新]检查测试结果文件时,结果本身似乎已经包含了如何找到.coverage文件的知识:

<ResultSummary outcome="Completed">
    <ResultFile path="VM-TEST01\data.coverage" />
    <ResultFile path="VM-TEST02\data.coverage" />

但问题是 MSTest 从不将它们发布到 TFS 服务器上!

【问题讨论】:

  • 假设您使用的是新的构建系统,VS 测试步骤应该会自动执行此操作。但是,如果没有,代码覆盖率结果将存储在 .coverage 文件中。您需要在构建步骤中启用代码覆盖率。我在这里的问题可能会有所帮助(如果可以,请也回答!)stackoverflow.com/questions/33752784/…
  • 我们不使用 TFS 2015 提供的最新构建系统。主要原因是我们希望受益于原始系统的特性,即可以通过使用测试控制器将我们的测试分布到不同的机器或环境中与多个测试代理。
  • 您是否尝试过 vstest.console.exe MyTest.dll /logger:TfsPublisher;Collection=localhost:8080/tfs/… 使用代码覆盖率数据进行测试" /EnableCodeCoverage ?

标签: tfs tfsbuild tfs-2015


【解决方案1】:

你需要
1)。打开构建定义,进入Process -> 3.Test -> Automated Test -> 设置运行类型设置 选项为 UserSpecified。 2)。在构建定义中选择 .testsettings 文件。

然后,在一个新的构建排队后,代码覆盖率数据显示在构建摘要页面上:

【讨论】:

  • 感谢您的回复。问题是:我们定义使用测试设置作为选项,并且在设置文件中我们启用了覆盖。如果我们使用“启用代码覆盖”作为选项,我们就不能使用任何测试设置文件。
  • @Max,如果是这种情况,您需要将“运行设置类型”设置为“用户指定”。更新了我上面的回复。
  • 谢谢维姬。能否分享一下设置文件中如何配置启用覆盖,和我们的一样吗?
  • @Max,1)。我定义了与您相同的 .testsettings 文件。 2)。当你点击“测试结果”时,你能找到“data.coverage”作为附件吗? 3)。 TFS2015 Update1 已安装,您介意将您的 TFS2015 升级到 Update1 吗?
  • 当点击“测试结果”时,data.coverage 可以作为附件找到。 TFS 测试控制器和代理是 2013 年,而 TFS 服务器是 2015 年。
猜你喜欢
  • 1970-01-01
  • 2017-02-26
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 2016-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多