Асинхронный тест зависает в 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.


person govin    schedule 03.10.2013    source источник
comment
Попробуйте Task.Run вместо конструктора задач или оберните значение Task.FromResult.   -  person Mike Zboray    schedule 03.10.2013


Ответы (1)


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

заставить это работать

person L.B    schedule 03.10.2013