2013-10-03 6 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

Try 'Task.Run' вместо конструктора Задачу или обернуть значение,' Task .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; 
} 

, чтобы заставить его работать