Я нашел много вопросов о том, как писать тесты для многопоточного кода. В любом случае, они в основном слишком абстрактны, и есть только несколько примеров реальных тестов. У меня был более узкий вопрос.
Как написать хороший тест для семафора в С#? Скажем, тест для внедрения SemaphoreSlim. Он должен охватывать сущность логики, а не целую кучу деталей реализации.
Всегда очень сложно протестировать любую операцию блокировки. Как правило, блокировка/семафор проверяется функционально. Другими словами, вместо того, чтобы пытаться создать сложный unit тест, чтобы попытаться проверить блокирующие вызовы, я бы рекомендовал создать тест, который пытается разбить код... Семафоры обычно используются для дросселирования, поэтому, если код остается работоспособным, несмотря на очень тяжелая батарея звонков, я бы счел это хорошим. Семафоры - это не код, который вы написали (предполагая, что вы используете классы.NET.), Поэтому вы не должны испытывать необходимости проверять их функциональность.