加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 单元测试中异步/等待阻塞的优点

发布时间:2020-12-15 08:33:44 所属栏目:百科 来源:网络整理
导读:现代单元测试框架支持等待异步单元测试的结果,如下所示: public async Task SomeTest(){ var result = await SomeMethodAsync(); // ... Verify the result ...} 使用这种异步方法比简单阻塞更有优势吗? public void SomeTest(){ var result = SomeMethodA
现代单元测试框架支持等待异步单元测试的结果,如下所示:
public async Task SomeTest()
{
    var result = await SomeMethodAsync();
    // ... Verify the result ...
}

使用这种异步方法比简单阻塞更有优势吗?

public void SomeTest()
{
    var result = SomeMethodAsync().Result;
    // ... Verify the result ...
}

在并行运行测试时,async是否只提供了一个好处?

解决方法

异步代码的主要好处是客户端的响应式UI和服务器端的可伸缩性.对于单元测试,您可以获得一定的可扩展性(这可以转化为整体速度优势,因为单元测试本质上是突发性的).

但这不是一个巨大的好处.您的测试(可能)运行得更快一些.

我通常使用异步任务单元测试方法,原因如下:

>如果您在上下文中测试代码,那么阻塞可能会导致典型的死锁问题.请注意,默认情况下,某些框架(例如xUnit)始终提供上下文.即使对于其他框架,通常也需要为单元测试ViewModel提供上下文.> await不会在AggregateException中包装异常.>您确实获得了一些可扩展性优势(理论上)允许您的单元测试整体运行得更快.假设您的框架并行运行测试.>为什么不呢?它们和同步方法一样简单.自2012年以来,每个主要单元测试框架都支持异步任务单元测试方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读