gpt4 book ai didi

multithreading - 对异步方法进行单元测试的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-03 15:17:46 25 4
gpt4 key购买 nike

我似乎找不到这个问题的 .NET 答案,我认为这很常见。
单元测试异步方法的最佳模式是什么?

显然我需要调用该方法,然后查看回调是否触发,但是有没有比简单地睡一会儿然后检查回调设置的标志更好的方法?在运行多个测试的情况下,管理标志会有点困惑。

最佳答案

我通常使用匿名委托(delegate)和等待句柄。例如,我的演示者中有一个名为 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);
}

关于multithreading - 对异步方法进行单元测试的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/400552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com