Асинхронное модульное тестирование - блоки незапланированных задач навсегда

При нормальном запуске моего приложения любой async Task метод вызывается без await Ключевое слово делает именно то, что я хочу. Запустите метод в другом потоке, но продолжайте выполнение (компилятор даже радует меня об этом). Это работает как положено и без проблем.

Когда этот же код выполняется в модульном тесте, этот неожиданный метод теперь блокируется навсегда, и мои модульные тесты никогда не заканчиваются неудачей.

Я предполагаю, что async Методы не были предназначены для использования как таковые, хотя они, кажется, работают нормально. Есть ли способ заставить их работать правильно в модульных тестах, или что бы вы порекомендовали использовать вместо этого для выполнения кода в фоновом режиме без блокировки (BackgroundWorker?). Мне понравился подход Task, потому что он позволяет мне повторно использовать метод блокирующим и неблокирующим способом. Я мог бы использовать Task.Run() и передать лямбду, которая вызывает метод, но это кажется уродливым / нечитаемым.

0 ответов

Другие вопросы по тегам