由于单元测试是单线程执行,而很多时候需要异步执行的方法时,就需要使用异步等待方法来帮助测试工程等待线程执行结束

using System.Diagnostics;
using System.Threading;namespace QuJiaoUnitTest
{public class WaitCallbackHelper{#region 构造函数static WaitCallbackHelper instance;public static WaitCallbackHelper Instance => instance ?? (instance = new WaitCallbackHelper());public WaitCallbackHelper(){instance = this;}#endregionbool _isWaiting = true;/// <summary>/// 绿灯/// </summary>public void Set(){_isWaiting = false;}/// <summary>/// 红灯/// </summary>public void Reset(){_isWaiting = true;}/// <summary>/// 等待信号/// </summary>/// <param name="millisecondsTimeout">等待毫秒数/// 1. 为正值时按毫秒时间等待/// 2. 为负值时按信号灯等待/// </param>/// <param name="ticktack">心跳毫秒</param>/// <param name="autoReset">自动重置信号灯,默认为true</param>public void WaitOne(int millisecondsTimeout = Timeout.Infinite, int ticktack = 1000, bool autoReset = true){if (autoReset) Reset();if (millisecondsTimeout < 0){Debug.WriteLine($"执行无限等待,心跳毫秒: {ticktack}");while (_isWaiting){Thread.Sleep(ticktack);}}else{Debug.WriteLine($"执行有限等待,等待毫秒: {millisecondsTimeout}");Thread.Sleep(millisecondsTimeout);}}}
}

使用方法:

其实微软还有一套官方实现的异步等待线程的方法

AutoResetEvent和ManualResetEvent,区别在于:

AutoResetEvent   收到 Set 后 , 一次只能执行一个线程,其它线程继续 WaitOne 。

ManualResetEvent  收到 Set 后,所有处理 WaitOne 状态线程均继续执行。

示例代码:

单元测试需要异步测试时使用的WaitCallbackHelper等待线程方法相关推荐

  1. iOS单元测试和UI测试全面解析

    编写测试可不是一项迷人的工作;然而,由于测试可以避免使你的宝贝应用程序变成一块充斥错误的大垃圾场,所以编写测试又是一项非常有必要做的工作.如果你正在阅读本文,那么你应当已经知道你应该为您的代码和用户界 ...

  2. 自动化测试(二)01-前端测试分为单元测试、集成测试和E2E测试 测试工具对比-适合TDD或 BDD、断言、异步测试 测试工具的类型

    自动化测试(二)01-前端测试分为单元测试.集成测试和E2E测试 & 测试工具对比-适合TDD或 BDD.断言.异步测试 & 测试工具的类型 前端自动化测试 测试是一个庞大的主题,包括 ...

  3. nodejs异步测试_异步过程的自动化测试

    nodejs异步测试 自从我开发了具有异步行为的服务器端应用程序以来已经有一段时间了,而该行为还不是事件驱动的系统. 异步行为始终是设计和测试中一个有趣的挑战. 通常,异步行为不应该很难进行单元测试– ...

  4. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  5. iOS 单元测试和UI测试教程

    原文:iOS Unit Testing and UI Testing Tutorial 作者:Audrey Tam 译者:kmyhy 编写测试不是为了追求刺激,测试是为了避免你崭新的 App 变成了充 ...

  6. 这一次,彻底入门前端测试,覆盖单元测试、组件测试(2.4w 字)

    前端测试一直是前端工程化中很重要的话题,但是很多人往往对测试产生误解,认为测试不仅没有什么用而且还浪费时间,或者测试应该让测试人员来做,自己应该专注于开发.所以,文章开头会先从"软件工程语境 ...

  7. iOS 单元测试和 UI 测试快速入门

    iOS 单元测试和 UI 测试快速入门 前言 平时写完业务代码的时候都会去自己测试一遍,后面每次有修改都需要重复测,不管是一个业务流程还是一个工具类,其实都可以通过测试框架来帮助我们完成测试,特别是一 ...

  8. 蛋疼的mocha库-promise异步测试

    mocha 测试库的使用 错误的处理异步测试 异步当出现断言错误的时候,他会抛出错误,但不会把这次测试当作失败,就是正确的顺利通过测试了,很无语. promise的reject会在then的第二个函数 ...

  9. Webpack单元测试,e2e测试

    此篇文章是续 webpack多入口文件.热更新等体验,主要说明单元测试与e2e测试的基本配置以及相关应用. 一.单元测试 实现单元测试框架的搭建.es6语法的应用.以及测试覆盖率的引入. 1. 需要安 ...

最新文章

  1. Pytorch:使用DCGAN实现数据复制
  2. KDD2020 | 混合时空图卷积网络:更精准的时空预测模型
  3. java中对象模型与数据库中的关系模型
  4. 全国高校MINI开发挑战赛结果出炉,99年的他们为什么能赢?
  5. 高德深度信息接入的平台化演进
  6. 优秀 Java 程序员写代码的风格
  7. 如果能够让出资人了解更多的c++项目进程
  8. 设计模式 建造者模式
  9. 考试全程指导读书笔记1 -Chap1 信息系统基础
  10. 金格插件WebOffice2015使用体会
  11. jmeter性能测试面试题二【多测师_王sir】
  12. 解决三星PM981硬盘无法正常安装黑苹果的问题(第四版)
  13. DHCP八种报文详解
  14. python实现fastq文件GC含量的计算
  15. SEO的关键字分析的浅析
  16. 【React Router 6 快速上手一】重定向Navigate / useRoutes路由表 / 嵌套路由Outlet
  17. 教你用电脑键盘打出“囍”字
  18. Linux进程中的RSS和VSZ
  19. 手把手介绍Manjaro中添加Google输入法---亲身测试,成功安装
  20. 618年中大促 ,全场6折起!限量周边8件套!

热门文章

  1. 网站被攻击了,接入CDN防护,源IP是否需要修改
  2. YALMIP的简单说明
  3. 准备工作(正则表达式学习)
  4. 2012系统服务器网络限制,Windows server 2012 r2对计算机的网络速度限制在~30mbps
  5. OpenJudge-021:鸣人和佐助
  6. 揭阳学计算机的好学校,揭阳中学排名前十名,2021年揭阳中学排名一览表
  7. HANA学习季(一) :HANA的基本概念
  8. 可汉学院python_18-04-18 回顾 可汗学院:计算数论
  9. 证明当x趋向于0时1-cosx的等价无穷小是(x^2/2)
  10. 【逗老师带你学IT】PRTG监控通过Python+Modbus RTU获取温湿度传感器数据