有没有办法将测试覆盖率结果发布回TFS服务器?

时间:2015-12-01 07:17:48

标签: tfs tfsbuild tfs2015

为了将测试分发到不同的机器(远程方式),我们必须使用.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服务器上!

1 个答案:

答案 0 :(得分:0)

你需要
1)。打开构建定义,转到处理 - &gt; 3.Test - &gt; 自动测试 - &gt;将运行设置类型选项设置为 UserSpecified 。 2)。在构建定义中选择.testsettings文件。

enter image description here

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

enter image description here