多執行緒 – 單元測試非同步方法的最好方法是什麼?
我似乎找不到一個.NET答案這個問題,我認為這將是相當普遍的.
單元測試非同步方法的最佳模式是什麼?
顯然,我需要呼叫該方法,然後查看回調是否觸發,但是有一種比簡單的睡眠更好的方法,然後檢查由回撥設定的標誌?管理標誌在執行多個測試的地方有點亂.
[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