异步测试在Nunit 2.6.2中挂起

gov*_*vin 2 .net c# nunit nunit-console c#-4.0

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

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

            Assert.That(answer, Is.True);
        }
Run Code Online (Sandbox Code Playgroud)

测试类看起来像这样

public class EightBall
    {
        public Task<bool> WillIWin()
        {
            return new Task<bool>(() => true);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我使用下面的命令在Nunit 2.6.2中运行测试.

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

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

L.B*_*L.B 5

return new Task<bool>(() => true);创建一个任务但不启动它.更好用return Task.Run(()=> true);return Task.FromResult<bool>(true)

您也可以将代码更改为

public Task<bool> WillIWin()
{
    var task = new Task<bool>(() => true);
    task.Start();
    return task;
}
Run Code Online (Sandbox Code Playgroud)

使它工作