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

前端之家收集整理的这篇文章主要介绍了c# – 单元测试中异步/等待阻塞的优点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
现代单元测试框架支持等待异步单元测试的结果,如下所示:
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年以来,每个主要单元测试框架都支持异步任务单元测试方法.

猜你在找的C#相关文章