Estoy escribiendo un conjunto de pruebas unitarias para probar una biblioteca de comunicación TCP/IP.¿Cómo se maneja la excepción en un hilo de fondo en una prueba unitaria?
Como estoy utilizando BeginAcceptClient y EndAcceptClient, los mensajes se reciben en una cadena de fondo.
Después de recibir un mensaje, realizo algunas afirmaciones sobre él, pero si falla alguna afirmación, el VSTestHost.exe se bloquea.
Busqué en Google un poco y descubrí que las excepciones de Assert se están lanzando en una cadena de fondo.
EDIT: Un código de ejemplo de lo que estoy haciendo, sólo para ilustrar:
public void TestFooMessage() {
Server.OnReceive += (s, e) => {
Assert.IsInstanceOfType(e.Message, typeof(Foo));
};
var message = new Foo();
Client.Send(message);
}
¿Alguien sabe cómo hacer que funcione como se esperaba: Entrar la afirmación y continúa funcionando con normalidad?
El problema es que los hilos son creados por el sistema bajo prueba. Por lo general, ni siquiera los conoces, a menos que te devuelvan la llamada. No hay una solución general para los hilos de fondo en las pruebas unitarias. –
Espera un evento en la función de prueba y configura el evento en la devolución de llamada asíncrona. –