繁体   English   中英

如何使用nunit测试异步方法

[英]how to test asynchronous methods using nunit

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

如果你有.NET的C#编译器版本5,那么你可以使用新的async和await关键字。 附上链接: 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
    }

}

您可以使用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);
    }

}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM