簡體   English   中英

Nunit使用.NET 3.5測試異步代碼

[英]Nunit test async code with .NET 3.5

我正在使用.NET 3.5並希望Nunit測試在委托/ lambda表達式中測試異步代碼,但無法使其工作。 如果有可能,有人可以就如何做到這一點提出一些建議嗎? 這是一個例子(SomeMethod直接返回,稍后調用OnDone):

[Test]
public void MyTest()
{
    MyClass.SomeMethod(123, OnDone);
}

private void OnDone(object sender, MyEventArgs e)
{
    Assert.AreEqual(123, e.Value);
}

如果SomeMethod在調用委托之前返回,那么您將不得不使用某種同步原語來等待委托被調用。

AutoResetEvent會這樣做。

// Arrange
var are = new AutoResetEvent(false);
int args = 0;

EventHandler<object, MyEventArgs> handler = (s, e) =>
{
    args = e.Value;
    are.Set(); 
};

// Act
MyClass.SomeMethod(123, handler);


// Assert
var wasCalled = are.WaitOne(timeout: TimeSpan.FromSeconds(1));
Assert.True(wasCalled);
Assert.AreEqual(123, args);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM