gpt4 book ai didi

c# - Nunit 使用 .NET 3.5 测试异步代码

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:17 25 4
gpt4 key购买 nike

我正在使用 .NET 3.5 并希望使用 Nunit 测试来测试委托(delegate)/lambda 表达式中的异步代码,但无法使其正常工作。如果可能的话,任何人都可以就如何做到这一点提出一些建议吗?这是一个示例(SomeMethod 立即返回,并在稍后调用 OnDone):

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

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

最佳答案

如果 SomeMethod 在调用委托(delegate)之前返回,那么您将不得不使用某种同步原语来等待委托(delegate)被调用。

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);

关于c# - Nunit 使用 .NET 3.5 测试异步代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32519017/

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