多线程 – 单元测试异步方法的最好方法是什么?

栏目: 编程工具 · 发布时间: 7年前

内容简介:我似乎找不到一个.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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码之美

代码之美

Grey Wilson / 聂雪军 / 机械工业出版社 / 2008年09月 / 99.00元

《代码之美》介绍了人类在一个奋斗领域中的创造性和灵活性:计算机系统的开发领域。在每章中的漂亮代码都是来自独特解决方案的发现,而这种发现是来源于作者超越既定边界的远见卓识,并且识别出被多数人忽视的需求以及找出令人叹为观止的问题解决方案。 《代码之美》33章,有38位作者,每位作者贡献一章。每位作者都将自己心目中对于“美丽的代码”的认识浓缩在一章当中,张力十足。38位大牛,每个人对代码之美都有自......一起来看看 《代码之美》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具