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年以来,每个主要单元测试框架都支持异步任务单元测试方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |