【问题标题】:TFS 2012 custom build workflow; no build coverage foundTFS 2012 自定义构建工作流程;未找到构建覆盖
【发布时间】:2012-09-12 05:49:36
【问题描述】:

在自定义 TFS 2012 工作流程中,我使用以下代码 sn-p:

IBuildDetail buildDetail = context.GetValue(BuildDetail);
var testManagementService = TfsTeamProjectCollectionFactory
                .GetTeamProjectCollection(new Uri("http://tfs:8080/tfs/Sandbox"))
                .GetService<ITestManagementService>();

var buildCoverages = testManagementService
                .GetTeamProject(buildDetail.TeamProject)
                .CoverageAnalysisManager
                .QueryBuildCoverage(buildDetail.Uri.ToString(), CoverageQueryFlags.Modules);

代码覆盖在构建上正确执行,构建的“构建摘要”包含:

> 2 binaries instrumented - 89% of all code blocks covered
    fooTests.dll - 99% of 479 code blocks covered
    foo.exe - 74% of 347 code blocks covered

出于测试目的,自定义活动是“签入门控更改”之后工作流中的最后一个活动。在构建过程中,buildCoverages 变量包含一个长度为 0 的数组。知道这是为什么吗?覆盖结果是否异步提交回 TFS,发布构建完成? “事务”中的构建和上述代码是否在不可见正在进行的构建的情况下运行?非常感谢任何帮助。

【问题讨论】:

    标签: tfs workflow-activity


    【解决方案1】:

    我不知道为什么(可能有很多原因),但是在构建工作流程期间通过此接口提供的覆盖范围与工作流程不同步。添加延迟循环

    do
    {
        buildCoverages = testManagementService
                .GetTeamProject(buildDetail.TeamProject)
                .CoverageAnalysisManager
                .QueryBuildCoverage(buildDetail.Uri.ToString(), CoverageQueryFlags.Modules);
    } while(buildCoverages.Length == 0 && retryDelay())
    

    围绕此代码可确保(到目前为止在几秒钟内)构建覆盖数组的可用性。

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多