Estoy escribiendo un código asincrónico súper simple. Simplemente guardando un archivo fuera del hilo.
Me gustaría probar este código usando el marco de prueba de unidad MSTest en Microsoft Visual Studio Team System 2008.
¿Cómo hago esto?
Me gustaría bloquear el método de prueba hasta que el método regrese. Puedo imaginar algunas formas de hacer esto, pero estoy asombrado de que no haya mejores prácticas o clases de ayuda al respecto.
Veo mucho para Silverlight, pero nada genérico.
.net
unit-testing
Kevin Moore
fuente
fuente
Respuestas:
Visual Studio 2012 (anteriormente conocido como "Visual Studio 11") introdujo soporte para pruebas asíncronas . Se parece a esto:
[TestMethod] public async Task FooTest() { var result = await SomeAsyncOperation(); Assert.IsTrue(someCondition); }
Como se señaló en los comentarios, el
Task
tipo de devolución es importante . No funcionará si declara que el método regresavoid
.fuente
Task
tipo de devolución es obligatorio;void
no funcionará (al menos no en la actualización 4 de VS2013)void
no se pueden esperar los métodos asincrónicos de retorno)En lugar de llamar directamente a los métodos System.IO, intente utilizar la biblioteca SystemWrapper . Luego, en sus pruebas, puede simular las llamadas como desee, devolver lo que quiera a su prueba, incluidas las condiciones de error, y verificar que su lógica funcione como se esperaba.
Si desea ver un ejemplo, eche un vistazo a esta publicación de blog que muestra cómo se puede usar con RhinoMocks.
fuente