Есть ли какое-либо реальное решение для использования преимуществ нескольких ядер при запуске набора тестов JUnit / TestNG? - PullRequest
3 голосов
/ 14 января 2011

Я знаю, что существует поддержка для параллельного запуска наборов тестов JUnit или TestNG, но для этого требуется специальная конфигурация (например, указание количества потоков) и, что наиболее важно, не предотвращают условия гонки в не поточно-безопасном коде.

Существуют ли какие-либо инструменты для JVM, которые прозрачно (т.е. без явной конфигурации) распределяют отдельные тесты по разным ядрам ЦП (используя разные потоки в одном и том же процессе или разных процессах), одновременно предотвращая состояние гонки независимо от безопасности потока?

Если такого инструмента не существует, каков наилучший подход для его реализации?

1 Ответ

0 голосов
/ 14 января 2011

Я настоятельно рекомендую запускать ваши тесты одновременно с обычными инструментами JUnit / TestNG.

Причина проста: Если тест не пройден из-за состояния гонки, то тест отлично выполнил свою работу - он выявил ошибку в вашем дизайне, коде или предположениях параллелизма, которые вы должны исправить.

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

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