如何通过 C# 中的 Release ID 从 TFS 获取测试结果

Posted

技术标签:

【中文标题】如何通过 C# 中的 Release ID 从 TFS 获取测试结果【英文标题】:How to get test results from TFS by Release ID in C# 【发布时间】:2020-06-28 12:25:48 【问题描述】:

我无法找到在 C# 中获取给定版本的测试结果的方法。

我之前所做的是,通过构建 ID 获取测试结果。

这是一个示例代码

  int buildId = 123;

  const string TFS_url = "<TFS_URL>";
  string projectname = "<Teamname>"; 
  TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(TFS_url));
  // Get build information
  BuildHttpClient bhc = ttpc.GetClient<BuildHttpClient>();

  // Get testrun for the build
  TestManagementHttpClient ithc = ttpc.GetClient<TestManagementHttpClient>();

  QueryModel qm = new QueryModel("Select * From TestRun Where BuildNumber Contains '" + buildId + "'");

  List<TestRun> testruns = ithc.GetTestRunsByQueryAsync(qm, projectname).Result;

  List<List<TestCaseResult>> allTestresults = new List<List<TestCaseResult>>();

  foreach (TestRun testrun in testruns)
  
    List<TestCaseResult> testresults = ithc.GetTestResultsAsync(projectname, testrun.Id).Result;
    allTestresults.Add(testresults);
  

我更喜欢在 C# 中使用给定的类,而不必通过 API 来完成。

【问题讨论】:

【参考方案1】:

build/release的测试结果存储在test runs中,所以你只需要先获取build/release的test run,然后再取回测试运行的测试结果。

您可以从特定版本的测试日志中获取测试运行 ID。

因此,最简单的方法是使用 REST API 从日志中获取特定的测试运行 ID。

GET https://instance/project/_apis/release/releases/releaseId/environments/environmentId/deployPhases/releaseDeployPhaseId/tasks/taskId/logs?api-version=version

详情请见Get Task Log v5。

然后只需通过测试运行 ID 即可获取测试结果详细信息。与您用于构建的共享代码示例类似。

【讨论】:

感谢 REST API 链接,我可以使用它。所以没有办法使用 Microsoft 的 NuGet 包(如 Microsoft.TeamFoundationServer.Client)? 您好 Jteve_Sobs,我们有 Microsoft.VisualStudio.Services.Release.Client,通过公共 REST API 提供对发布服务的访问。它实际上仍在使用 Rest API 来调用。对于完整的包,你可以在这里查看我们的官方文档:docs.microsoft.com/en-us/azure/devops/integrate/concepts/…

以上是关于如何通过 C# 中的 Release ID 从 TFS 获取测试结果的主要内容,如果未能解决你的问题,请参考以下文章

如何通过实体框架从 C# 中的同步代码并行运行查询

如何从 C# 中的同一方法返回字符串以及 IEnumerable<T>? [复制]

如何从 C# 中的 MethodCallExpression 调用方法

C#如何通过ID从数据表中获取两列值

如何通过 C# ASP.net 从 SQL Server 中的文本框中存储日期

如何从 C# 中的数据库中获取最后一个 id