Как протестировать многопоточный сервис Windows с таймерами? - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть тема.Как я могу проверить это с помощью UnitTests?

Заранее спасибо!

1 Ответ

1 голос
/ 22 декабря 2011

В общих чертах: Надежное модульное тестирование многопоточного кода чрезвычайно сложно. Причина этого в том, что вы не можете контролировать время выполнения потоков.

Простое решение состоит в том, чтобы инициировать запросы (или что-то еще, что является процессом ваших потоков), а затем Thread.Sleep() некоторое время в вашем модульном тесте и надеяться, что ваши потоки запланированы для выполнения работы. Затем проверьте, все ли правильно обработано. В основном это работает, но иногда не удается из-за планирования и синхронизации - особенно, когда вы запускаете свои модульные тесты на виртуальной машине. Вы также можете установить некоторые события или состояния в своих потоках, чтобы указать, что они прошли определенные этапы, но это может стать немного уродливым.

Однако, если вы можете быть более точным, что именно вы делаете, возможно, есть обходной путь, который работает лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...