MC, 18:31 środa, 16.05.2012 r.
Ilustracja do artykułu: .NET & UT - The current SynchronizationContext may not be used as a TaskScheduler

.NET & UT - The current SynchronizationContext may not be used as a TaskScheduler

Notka w temacie testów jednostkowych (Unite Testing), a dokładniej recepta na problem z SynchronizationContext - System.InvalidOperationException: The current SynchronizationContext may not be used as a TaskScheduler.

Co powoduje ten problem?

Rzecz w tym, że SynchronizationContext ustalany jest w wątku UI (UI Thread), a test odbywa się w osobnym wątku, przez co nie mamy dostępu do tego kontekstu. Domyślnie więc, testując kod, który odwołuje się do SynchronizationContext-u skazani jesteśmy na error o treści, którą podałem we wstępie. Na szczęście można ten kontekst ustalić ręcznie

Jak rozwiązać ten problem z testem?

Po prostu sami, ręcznie ustalimy ten kontekst w wątku testu. Wystarczy do jego kodu dopisać:
SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

Takie podejście powinno zmniejszyć listę błędów o jeden wpis ;)

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: