首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpClient.PostAsync()方法永远挂在C# xUnt测试中

HttpClient.PostAsync()方法永远挂在C# xUnt测试中
EN

Stack Overflow用户
提问于 2022-07-07 05:04:58
回答 1查看 115关注 0票数 1

我有600个功能性xUnit测试,每个测试都在测试中间调用一个httpClient.GetAsync(apiUrl)httpClient.PostAsync(apiUrl, data)方法,这将调用一些外部API。

当我按顺序执行每个测试时,所有测试都正常工作。而且,即使在我并行运行5-6测试用例的时候,一切都很好。

我的问题是,当我从顶部开始所有600个测试用例时(它将在600个测试用例中并行启动大约50个),所有的测试都挂在它发送httpClient.PostAsync(apiUrl, data)方法的地方。

同样的问题发生在它执行httpClient.GetAsync(apiUrl)方法的地方。但在我将其更改为httpClient.GetAsync(apiUrl).ConfigureAwait(false)之后,它就修复了这个问题。

但是,当我将httpClient.PostAsync(apiUrl, data)改为httpClient.PostAsync(apiUrl, data).ConfigureAwait(false)时,问题仍然是一样的。

有人能解释一下为什么会这样吗?我该怎么做才能解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-08 09:14:28

当我按下面的方式更改httpClient.PostAsync(apiUrl, data)方法时,它会修复这个问题。我不知道两种方法有什么区别。

以前的方式

代码语言:javascript
复制
var response = await httpClient.PostAsync(apiUrl, data);

我在上面做了如下修改,它解决了这个问题。

代码语言:javascript
复制
var task = httpClient.PostAsync(apiUrl, data);
var response = task.GetAwaiter().GetResult();

我还发现了一些类似的问题,在下面的文章中已经讨论过了。如果有人面临类似的问题,请跟随下面的帖子,因为它包含一些更有用的提示和理由。HttpClient.GetAsync(...) never returns when using await/async

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72892521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档