Unit Test. Кто использует?
Но что делать если в тестируемом классе / методе запускаются н-цать потоков и пытаются одновременно что-то сделать (да хоть события из очереди обработать). Внешних факторов нет.
А мне кажется, что я правильно ответил именно на тот вопрос :)
Приведенная тобой задача слишком глобальная. Для того, чтобы ее протестировать юнит-тестами, задачу надо разбить на составляющие и тестировать эти составляющие.
Что в приведенной задаче является unit under test? Запуск ли это н-цати потоков? Выборка событий из очереди? Обработка события в потоке? Работа в режиме, когда потоки вынуждены ждать новых событий? Или это работа в режиме, когда потоки не справляются с поступающими событиями? В общем случае есть как минимум 3 unit under test: менеджер потоков, логика самого потока и очередь. В наиболее простом случае, тестировать нужно только логику самого потока, потому что создание потоков тестируется совершенно элементарно (достаточно одного теста, да и тот наверное не обязателен), а ConcurrentQueue<T> тестировать не надо, там уже все протестировано за нас.
Ну и надо понимать, что наличие юнит-тестов, пусть даже со 100% покрытием, не является гарантией того, что вся система будет работать без ошибок. Наличие юнит-тестов не отменяет необходимость интеграционных тестов.