Если вы используете VS 11 Beta, убедитесь, что ваш тестовый модуль объявлен как async Task
.
Если вы используете VS 11 Dev Preview, используйте Async Unit Testsпроект от CodePlex.
У меня есть больше информации об асинхронных модульных тестах в моем блоге ( часть 1 , часть 2 ).В итоге:
- Когда
await
нужно (асинхронно) ждать, он планирует продолжение и возвращается к своему вызывающему. - MSTest видит возврат метода теста, не видит никакогоисключения и помечает его как «пройденный».
- Позже
StoreAsync
будет завершен, а остальная часть метода будет запущена (в потоке пула потоков, не в контексте этого модульного теста).
VS 11 Beta добавляет первоклассную поддержку async Task
методов модульного тестирования.Таким образом, второй шаг, описанный выше, отличается: MSTest видит возврат метода тестирования, но не знает, считать его завершенным, пока не завершится Task
.
Проект асинхронных модульных тестов использует другой подход: он применяет асинхронный контекст длякаждый метод модульного теста в [AsyncTestClass]
.Этот асинхронный контекст ожидает завершения всех асинхронных операций (включая async void
методы) перед завершением модульного теста.