Мне нравится писать два или больше метода тестирования выполниться на параллельных потоках, и каждый из них выполняет вызовы в объект под тестом. Я использовал Сон (), звонит для координирования порядка вызовов от различных потоков, но это не действительно надежно. Это также намного медленнее, потому что необходимо спать достаточно долго, что синхронизация обычно работает.
я нашел библиотека Multithreaded TC Java от той же группы, которая записала FindBugs. Это позволяет Вам определить порядок событий, не используя Сон (), и это надежно. Я еще не попробовал его.
самое большое ограничение к этому подходу - то, что он только позволяет Вам протестировать сценарии, которые Вы подозреваете, доставит неприятности. Как другие сказали, действительно необходимо изолировать многопоточный код в небольшое количество простых классов для имения любой надежды на полное тестирование их.
, Как только Вы тщательно протестировали сценарии, Вы ожидаете доставлять неприятности, ненаучный тест, который бросает набор одновременных запросов в классе некоторое время, является хорошим способом искать неожиданную проблему.
Обновление: я играл немного с библиотекой Multithreaded TC Java, и она работает хорошо. Я также портировал некоторые его функции к версии.NET, которую я называю TickingTest.
Они оба делают то же, когда Вы удаляете пакет, таким образом, они одинаково хороши, и это - все до Вас, какой Вы предпочитаете. Синаптический обеспечивает передовую функциональность, но Вам не нужно это для того, чтобы просто удалить программное обеспечение.