Забудьте получать хорошие результаты путем тестирования на проблемы параллелизма. Попытка уменьшить синхронизацию и сделать проблему меньшей. Тогда используйте максимально высоко поддержку библиотеки, чтобы сделать синхронизацию. И только если у Вас действительно есть тогда попытка обработать параллелизм самих. Когда Вы знаете, что каждый рабочий делает его корректную работу, и все Ваши взгляды говорят Вам, что Вам облизали проблему параллелизма, тогда генерируют некоторую интересную загрузку. Платформы Unittest и их расширения могут сделать то задание, но знать, что Вы не тестируете единиц больше. (Помните, Вам уже покрыли ту часть)
, Если Ваша модель параллелизма получает сложные инструменты выезда, которым удовлетворяют для того как ВРАЩЕНИЕ .
Параллелизм Java на практике имеет некоторую большую информацию о как к тестам записи на проблемы параллелизма. Однако они не истинные модульные тесты. Почти невозможно записать истинный модульный тест на проблему параллелизма.
В основном это сводится к этому. Создайте набор тестовых потоков и запустите их. Каждый поток должен
, поток junit создает все потоки и запускает их, затем считает в обратном порядке на первом фиксаторе однажды, чтобы позволить им всем пойти, затем ожидает второго фиксатора, затем делает некоторые утверждения об изменяемом состоянии.
Еще больше, чем другие типы ошибок, легче записать провальный модульный тест на ошибку параллелизма после , Вы нашли ошибку.
В некоторых случаях я нашел, что могу вызвать конкретное проблематичное чередование вызовов к потенциально неориентированному на многопотоковое исполнение классу при помощи нескольких потоков, которые синхронизируются друг с другом, возможно, с использованием CountDownLatch или некоторого такого механизма параллелизма. Иногда это просто не работает однако, например, при попытке протестировать то, что происходит, если два потока находятся в том же методе одновременно.
Вот интересная статья (не знайте много об инструменте, хотя): http://today.java.net/pub/a/today/2003/08/06/multithreadedTests.html