Piszę pakiet testów jednostkowych, aby przetestować bibliotekę komunikacyjną TCP/IP.Jak obsługiwać wyjątek w wątku tła podczas testu jednostkowego?
Ponieważ używam BeginAcceptClient i EndAcceptClient, wiadomości są odbierane w wątku tła.
Po otrzymaniu wiadomości wykonuję na niej pewne potwierdzenia, ale jeśli jakikolwiek asercja nie powiedzie się, plik VSTestHost.exe ulega awarii.
Przeszukałem trochę i przekonałem się, że wyjątki Assert są zgłaszane w wątku tła.
EDIT: Kod próbka tego, co robię, po prostu ilustrate:
public void TestFooMessage() {
Server.OnReceive += (s, e) => {
Assert.IsInstanceOfType(e.Message, typeof(Foo));
};
var message = new Foo();
Client.Send(message);
}
Czy ktoś wie jak zrobić to działa zgodnie z oczekiwaniami: Zaloguj twierdzenie i nadal działa normalnie?
Problem polega na tym, że wątki są tworzone przez testowany system. Zwykle ich nawet nie znasz, chyba że zostaniesz oddzwoniony. Nie ma ogólnego rozwiązania dla gwintów tła w testach jednostkowych. –
Poczekaj na zdarzenie w funkcji testu i ustaw zdarzenie w asynchronicznym wywołaniu zwrotnym. –