2013-10-03 89 views
2

我有下面这个简单的测试方法。异步测试在Nunit中挂起2.6.2

[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

+3

尝试'Task.Run'而不是任务建构,或者包装一个值,'任务.FromResult'。 –

回答

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

,使其工作