2013-10-03 86 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; 
} 

,使其工作