Я пишу очень простой асинхронный код. Просто сохраняю файл вне потока.
Я хотел бы протестировать этот код с помощью платформы модульного тестирования MSTest в Microsoft Visual Studio Team System 2008.
Как мне это сделать?
Я хотел бы просто заблокировать тестовый метод, пока метод не вернется. Я могу представить себе несколько способов сделать это, но я потрясен, что здесь нет никаких передовых практик или вспомогательных классов.
Я многое вижу по Silverlight, но ничего общего.
.net
unit-testing
Кевин Мур
источник
источник
Ответы:
Visual Studio 2012 (ранее известная как «Visual Studio 11») представила поддержку асинхронных тестов . Выглядит это так:
[TestMethod] public async Task FooTest() { var result = await SomeAsyncOperation(); Assert.IsTrue(someCondition); }
Как было отмечено в комментариях, возвращаемый тип имеет важное значение . Это не сработает, если вы объявите метод как возвращающий .
Task
void
источник
Task
тип возврата является обязательным -void
не будет работать (по крайней мере, не в обновлении 4 VS2013)void
нельзя ожидать возврата асинхронных методов)Вместо прямого вызова методов System.IO попробуйте использовать библиотеку SystemWrapper . Затем в своих тестах вы можете имитировать вызовы по своему усмотрению, вернуть все, что вам нравится, обратно в свой тест, включая условия ошибки, и убедиться, что ваша логика работает должным образом.
Если вы хотите увидеть пример, прочтите это сообщение в блоге, в котором показано, как его можно использовать с RhinoMocks.
источник