J'écris une suite de tests unitaires pour tester une bibliothèque de communication TCP/IP. Lorsque j'utilise BeginAcceptClient et EndAcceptClient, les messages sont reçus dans un thread d'arrière-plan.Comment gérer l'exception dans un thread d'arrière-plan dans un test unitaire?
Après la réception d'un message, j'effectue certaines assertions, mais si une assertion échoue, le VSTestHost.exe se bloque. Je ai googlé un peu et a découvert le fait que les exceptions Assert sont lancées dans un fil de fond.
EDIT: Un exemple de code de ce que je fais, juste à illustrer:
public void TestFooMessage() {
Server.OnReceive += (s, e) => {
Assert.IsInstanceOfType(e.Message, typeof(Foo));
};
var message = new Foo();
Client.Send(message);
}
Est-ce que quelqu'un sait comment faire fonctionner comme prévu: Connectez-vous l'affirmation et continue de fonctionner normalement?
Le problème est que les threads sont créés par le système testé. En général, vous ne les connaissez même pas, sauf si vous êtes rappelé. Il n'y a pas de solution générale pour les threads d'arrière-plan dans les tests unitaires. –
Attendre un événement dans la fonction de test et définir l'événement dans le rappel asynchrone. –