如何使用 nunit 测试异步方法

发布于 2024-08-24 16:47:05 字数 25 浏览 6 评论 0原文

如何使用 nunit 测试异步方法?

How to test asynchronous methods using nunit?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

濫情▎り 2024-08-31 16:47:09

您可以使用 NUnits 延迟约束

[TestFixture]
class SomeTests
{
    [Test]
    public void AsyncTest()
    {
        var result = false;
        var Some = new Some();
        Some.AsyncFunction(e =>
        {
            result = e.Result;
        });

        Assert.That(() => result, Is.True.After(1).Minutes.PollEvery(500).MilliSeconds);
    }

}

此示例适用于 NUnit 3.6,但早期版本也支持延迟约束,但要查找它,因为语法不同。

You could use NUnits Delayed Constraint

[TestFixture]
class SomeTests
{
    [Test]
    public void AsyncTest()
    {
        var result = false;
        var Some = new Some();
        Some.AsyncFunction(e =>
        {
            result = e.Result;
        });

        Assert.That(() => result, Is.True.After(1).Minutes.PollEvery(500).MilliSeconds);
    }

}

This example is for NUnit 3.6 but earlier versions also support Delayed Constraint, but lookup it up as the syntax is different.

转角预定愛 2024-08-31 16:47:07

如果您有 .NET 版本 5 的 C# 编译器,则可以使用新的 async 和 wait 关键字。
附上链接:http://simoneb.github。 io/blog/2013/01/19/async-support-in-nunit/

如果你可以使用带有匿名 lambda 函数的闭包,使用线程同步。

例如)

[TestFixture]
class SomeTests
{
    [Test]
    public void AsyncTest()
    {
        var autoEvent = new AutoResetEvent(false); // initialize to false

        var Some = new Some();
        Some.AsyncFunction(e =>
        {
            Assert.True(e.Result);
            autoEvent.Set(); // event set
        });
        autoEvent.WaitOne(); // wait until event set
    }

}

If you have .NET’s version 5 of the C# compiler then you can use new async and await keywords.
attach the link : http://simoneb.github.io/blog/2013/01/19/async-support-in-nunit/

If you can using closure with anonymous lambda function, using thread synchronization.

eg)

[TestFixture]
class SomeTests
{
    [Test]
    public void AsyncTest()
    {
        var autoEvent = new AutoResetEvent(false); // initialize to false

        var Some = new Some();
        Some.AsyncFunction(e =>
        {
            Assert.True(e.Result);
            autoEvent.Set(); // event set
        });
        autoEvent.WaitOne(); // wait until event set
    }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文