Выбор ответа Junior Тестирование обновлено

Асинхронный тест

Вопрос

Как правильно объявить асинхронный тест в xUnit?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: public async Task Savesorder(). Тест должен возвращать Task, тогда раннер дождётся завершения и увидит исключения. async void фреймворк ждать не сможет (xUnit выдаёт ошибку анализатора). .Wait() блокирует поток и оборачивает исключения в AggregateException.

Варианты ответа

  1. public async void Saves_order()
  2. public async Task Saves_order()правильный ответ
  3. public void Saves_order() { SaveAsync().Wait(); }
  4. public Task Saves_order() => Task.Run(SaveAsync);, иначе тест не дождётся

Разбор

Тест должен возвращать Task, тогда раннер дождётся завершения и увидит исключения. async void фреймворк ждать не сможет (xUnit выдаёт ошибку анализатора). .Wait() блокирует поток и оборачивает исключения в AggregateException. Task.Run здесь лишний.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме