Estou escrevendo um código assíncrono super simples. Basta salvar um arquivo fora do thread.
Eu gostaria de testar este código usando a estrutura de teste de unidade MSTest no Microsoft Visual Studio Team System 2008.
Como eu faço isso?
Eu gostaria de bloquear simplesmente o método de teste até que o método retorne. Posso imaginar algumas maneiras de fazer isso, mas estou impressionado com a inexistência de práticas recomendadas ou classes auxiliares para isso.
Vejo muito para o Silverlight, mas nada genérico.
.net
unit-testing
Kevin moore
fonte
fonte
Respostas:
O Visual Studio 2012 (anteriormente conhecido como "Visual Studio 11") introduziu suporte para testes assíncronos . Se parece com isso:
[TestMethod] public async Task FooTest() { var result = await SomeAsyncOperation(); Assert.IsTrue(someCondition); }
Conforme observado nos comentários, o
Task
tipo de retorno é importante . Não funcionará se você declarar o método como retornandovoid
.fonte
Task
tipo de retorno é obrigatório -void
não funcionará (pelo menos não na atualização 4 do VS2013)void
-retornar métodos assíncronos não pode ser esperado)Em vez de chamar os métodos System.IO diretamente, tente usar a biblioteca SystemWrapper . Então, em seus testes, você pode simular as chamadas como desejar, retornar o que quiser de volta ao seu teste, incluindo condições de erro, e verificar se sua lógica funciona conforme o esperado.
Se você quiser ver um exemplo, dê uma olhada nesta postagem do blog que mostra como ele pode ser usado com RhinoMocks.
fonte