簡體   English   中英

TFS 2012定制構建工作流程; 找不到建築覆蓋率

[英]TFS 2012 custom build workflow; no build coverage found

在自定義TFS 2012工作流中,我使用以下代碼片段:

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,並在構建完成后發布? 是否在“事務”中進行構建,並且上面的代碼在運行過程中看不到正在進行的構建? 任何幫助,不勝感激。

我不確定為什么(可能有很多原因),但是在構建工作流期間通過此接口進行覆蓋的可用性與工作流不同步。 添加延遲循環

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

圍繞此代碼可確保(到目前為止,僅需幾秒鍾)構建覆蓋數組的可用性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM