[英]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.