当前位置:  开发笔记 > 数据库 > 正文

单元测试异步方法的最佳方法是什么?

如何解决《单元测试异步方法的最佳方法是什么?》经验,为你挑选了1个好方法。

我似乎无法找到这个问题的.NET答案,我认为这个问题相当普遍.
单元测试异步方法的最佳模式是什么?

显然我需要调用该方法,然后查看回调是否触发,但是有没有比简单地稍微休眠然后检查由回调设置的标志更好的方法?在运行多个测试的情况下,管理标志会有点混乱.



1> ctacke..:

我通常使用匿名委托和等待句柄.例如,我在我的演示者中有一个名为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>(
    delegate(object o, GenericEventArg a)
    {
      actual = a.Value;
      are.Set();
    });

  presenter.SetRemoteTableName(expected);
  Assert.IsTrue(are.WaitOne(1000, false), "Event never fired");
  Assert.AreEqual(actual, expected);
}

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有