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