来自 TFS REST API 响应的 JsonSerializationException

JsonSerializationException from TFS REST API response

我正在尝试将新的 TFS/VSTS REST API 与我们的本地 TFS 2015 服务器一起使用,并且无法检索测试运行,因为响应未通过内部验证。

使用如下客户端代码:

var connection = new VssConnection(serverUri), credentials);
var client = connection.GetClient<TestManagementHttpClient>();
var runs = await client.GetTestRunsAsync("project", planId:183110);

在第 3 行中抛出 JsonSerializationException 并显示以下消息:

Required property 'environmentName' not found in JSON. Pathvalue[0].testEnvironment', line 1, position 582.

这是准确的。检查 Fiddler 中的响应显示 testEnvironment 属性 只有 environmentId 属性,没有 name。我已将经过修剪的回复样本上传到 this gist

我的问题是为什么 TFS 没有 return 这个值,或者有没有办法强制 API SDK 忽略这个验证错误?

如果 includeRunDetails 参数为真,我可以重现该问题。我报告了一个错误 here 你可以投票给它。

解决方法是您可以将 includeRunDetails 设置为 false 以获取不包含详细信息的测试 运行s,然后根据结果(测试 运行 id)获取测试 运行 包含您想要的详细信息。

client.GetTestRunByIdAsync