内容简介:我似乎找不到一个.NET答案这个问题,我认为这将是相当普遍的.单元测试异步方法的最佳模式是什么?显然,我需要调用该方法,然后查看回调是否触发,但是有一种比简单的睡眠更好的方法,然后检查由回调设置的标志?管理标志在运行多个测试的地方有点乱.
我似乎找不到一个.NET答案这个问题,我认为这将是相当普遍的.
单元测试异步方法的最佳模式是什么?
显然,我需要调用该方法,然后查看回调是否触发,但是有一种比简单的睡眠更好的方法,然后检查由回调设置的标志?管理标志在运行多个测试的地方有点乱.
我通常使用匿名委托和一个waithandle. FOr示例我在我的演示者中有一个名为SetRemoteTableName的功能.当名称设置时,它也会引发一个事件.我想测试那个异步提出的事件.测试如下所示:
[TestMethod] [WorkItem(244)] [Description("Ensures calling SetRemoteTableName with a valid name works AND raises the RemoteTableNameChange event")] public void SetRemoteTableNamePositive() { string expected = "TestRemoteTableName"; string actual = string.Empty; AutoResetEvent are = new AutoResetEvent(false); SQLCECollectorPresenter presenter = new SQLCECollectorPresenter(); presenter.RemoteTableNameChange += new EventHandler<GenericEventArg<string>>( delegate(object o, GenericEventArg<string> a) { actual = a.Value; are.Set(); }); presenter.SetRemoteTableName(expected); Assert.IsTrue(are.WaitOne(1000, false), "Event never fired"); Assert.AreEqual(actual, expected); }
http://stackoverflow.com/questions/400552/what-is-the-best-way-to-unit-test-an-asynchronous-method
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- JavaScript异步编程的6种方法
- Golang 多goroutine异步通知error的一种方法
- Ajax客户端异步调用服务端的实现方法(js调用cs文件)
- Ajax请求二进制流进行处理(ajax异步下载文件)的简单方法
- Node.js模拟发起http请求从异步转同步的5种方法
- Java8 基于spring @Async方法和Lambda实现任意代码块异步执行
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Docker开发指南
[英] Adrian Mouat / 黄彦邦 / 人民邮电出版社 / 2017-4 / 79.00元
Docker容器轻量和可移植的特性尤其适用于动态和分布式的环境,它的兴起给软件开发流程带来了一场革命。本书对Docker进行了全面讲解,包括开发、生产以至维护的整个软件生命周期,并对其中可能出现的一些问题进行了探讨,如软件版本差异、开发环境与生产环境的差异、系统安全问题,等等。一起来看看 《Docker开发指南》 这本书的介绍吧!