【问题标题】:Async test hangs in Nunit 2.6.2Nunit 2.6.2 中的异步测试挂起
【发布时间】:2013-10-03 16:28:18
【问题描述】:

我有下面这个简单的测试方法。

[Test]
        public async Task OneSimpleTest1()
        {
            var eightBall = new EightBall();
            var answer = await eightBall.WillIWin();

            Assert.That(answer, Is.True);
        }

测试类是这样的

public class EightBall
    {
        public Task<bool> WillIWin()
        {
            return new Task<bool>(() => true);
        }
    }

我使用以下命令在 Nunit 2.6.2 中运行测试。

nunit-console.exe EightBall.dll /framework:net-4.5

但是,测试似乎没有返回并永远挂起。是否有一种特殊的方法可以使用 Nunit 2.6.2 运行异步测试。我认为使用 Nunit 2.6.2 支持异步

【问题讨论】:

  • 尝试使用Task.Run 代替Task 构造函数,或者包装一个值Task.FromResult

标签: c# .net c#-4.0 nunit nunit-console


【解决方案1】:

return new Task&lt;bool&gt;(() =&gt; true); 创建一个任务但不启动它。最好使用return Task.Run(()=&gt; true);return Task.FromResult&lt;bool&gt;(true)

您也可以将代码更改为

public Task<bool> WillIWin()
{
    var task = new Task<bool>(() => true);
    task.Start();
    return task;
}

让它工作

【讨论】:

    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2020-09-19
    • 2012-01-31
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多