Soy bastante nuevo en las pruebas unitarias y actualmente estoy experimentando un poco con las herramientas de prueba de Visual Studio.Cómo modelar concurrencia en pruebas unitarias?
Mi pregunta es cómo definir las afirmaciones sobre comportamiento concurrente en estas pruebas. P.ej. dada una clase BoundedChan<T>
implementar un canal limitado, ¿cómo puedo especificar pruebas como
- "
channel.Send
no bloqueará" o - "Si se excede la capacidad del canal,
channel.Send
bloqueará hasta que un valor se lee"
¿Existe alguna solución elegante para escribir estas afirmaciones?
No estoy seguro de que haya algún duplicado preciso (aunque este está cerca: http: // stackoverflow.com/questions/314580/how-do-i-perform-a-unit-test-using-threads), pero hay un buen material SO sobre esto. Enumeré algunas de las mejores discusiones en mi respuesta aquí: http://stackoverflow.com/questions/1520539/how-to-prove-that-multithreading-is-working/1520619#1520619. –
@Jeff: ¿Por qué no publica esto como respuesta? Me parece bastante útil. – Dario