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

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. 全国哀悼日,怎么让网站变灰色???
  2. 转:国外科技论文写作资源
  3. 可以参考《SpringMVC接口测试异常:Can not deserialize instance
  4. 病毒周报(100125至100131)
  5. 腾讯单子非:知识图谱在NLU与推荐中,是如何发挥作用的?该如何构建?
  6. 13.文本文件和二进制文件的区别
  7. [转载] Linux进程状态解析之R、S、D、T、Z、X
  8. 51单片机用PID算法温度控制器毕业设计 完整资料,Matlab作图仿真源码
  9. 解决谷歌浏览器主页被毒霸网址恶意篡改问题
  10. 正则表达式的进阶用法——预查与分组
  11. 大数据发展呈现十大趋势
  12. web总体复习 h5c3
  13. [附源码]计算机毕业设计JAVA校园超市进销存管理系统
  14. Proteus VSM Studio汇编 + 蜂鸣器播放谱曲八月桂花香
  15. labelme设置生成label_viz.png中的图例大小
  16. 瑞星2008正式版升级包 官方安装包
  17. html网站meta标签大全
  18. 2020.08.14【RNA-Seq流程】丨将HTseq生成的基因COUNT值转换为FPKM值
  19. Axhub service文件分享
  20. vmtools的使用

热门文章

  1. settings.xml详解
  2. asp.net鲜花网站系统VS开发sqlserver数据库web结构C#编程
  3. WPF编程,使用字体图标的一种方法。
  4. 什么是SSL数字证书
  5. intelliJ IDEA2021 从零开始配置JAVA servlet环境 JSP教程
  6. 方差分析 可汗学院统计学 笔记
  7. 技术,管理,和境界问题
  8. 200亿元输血求生,中芯国际希望几何?
  9. python手记(四):pillow(四) ImageDraw模块 图片绘制(图片上自定义绘制)
  10. python polygon_在Python中将Multipolygon转换为Polygon - python