TestResultsHttpClientBase.GetTestResultDetailsForBuildAsync中的属性为null

问题描述

我尝试从专门的AzureDevOps构建中获取所有测试结果。我至少需要任何测试结果中的那些信息:AutomatedTestNameOutcomeErrorMessage

运行TestManagementHttpClient.GetTestResultDetailsForBuildAsync(this.ProjectId,this.build.Id)返回所有测试,但是测试结果上的几乎所有属性均为空,例如AutomatedTestName

TestManagementHttpClient.GetTestResultDetailsForBuildAsync(this.ProjectId,this.build.Id,shouldIncludeResults: true) 也不起作用。

是否可以加载所有属性

一种解决方法调用TestManagementHttpClient.GetTestResultsAsync(this.ProjectId,runId),但结果数限制为10000。这以分页结束,直到找不到更多结果为止。如果有的话,这可能是瓶颈,并且可能会导致性能下降。 50万次测试......

解决方法

我们可以通过下面的REST API

加载所有属性
GET https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/results?api-version=5.1

带有可选参数:

GET https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/results?detailsToInclude={detailsToInclude}&$skip={$skip}&$top={$top}&outcomes={outcomes}&api-version=5.1

如果您有500'000个测试,我们可以使用URI参数$skip指定要从头开始跳过的测试结果数。

更新1

一种解决方法是调用TestManagementHttpClient.GetTestResultsAsync(this.ProjectId,runId),但结果数限制为10000。

我们可以致电TestManagementHttpClient.GetTestResultsAsync(this.ProjectId,runId,skip number)来指定要从头开始跳过的测试结果数。

有关更多详细信息,请参阅此doc