Я предполагаю, что вы прошли все другие обычные шаги, такие как фиктивные вызовы базы данных, оптимизация этапов настройки теста и т. Д., И поэтому тестовый прогон занимает столько времени, что у вас есть 3000 тестов, а отдельные тесты не очень медленные .
Если это так, один из подходов заключается в многопоточности вашего тестового прогона. Test-NG очень хорошо это поддерживает. Преобразование ваших тестов из junit в test-ng не так сложно и нужно сделать только один раз.
Тесты, которые должны выполняться последовательно, могут быть легко помечены:
@Test(sequential = true)
public class ATest {
...
На многоядерной машине вы увидите огромные улучшения во время выполнения. Даже на одном ядре вы увидите хорошее улучшение, поскольку некоторые потоки ожидают операций ввода-вывода.
Подробнее о настройке см. Здесь:
http://beust.com/weblog/archives/000407.html
Надеюсь, это поможет.
....
Еще несколько предложений - Не могу поверить, что вы не используете непрерывную интеграцию. Поверьте мне, 30 разработчиков не собираются перегружать ваш CI сервер. Даже если вы не можете купить CI, установите hudson на свою машину - установка займет 10 минут, а преимущества огромны. Спросите своего менеджера, который хуже каждого разработчика, ожидающего завершения модульных тестов или того, чтобы сервер сделал это за вас. Наличие глупой шляпы для человека, который сломал сборку, обычно достаточно, чтобы убедить разработчиков запустить свои юнит-тесты.
Если качество проверок действительно является серьезной проблемой (не забывайте, что регистрация всегда может быть отменена), рассмотрите Teamcity - он запускает тесты и не фиксирует код, если тесты терпит неудачу.
Наконец, вариант, который может подойти вашему варианту использования, также клевер и бамбук . В последней версии ведется запись того, какой код проверен какими тестами, и когда вносятся изменения, он запускает только соответствующие тесты. Это потенциально очень мощный.
Но помните, что умные инструменты, такие как test-ng, teamcity и clover, покажутся вам только хорошими - хорошие тесты не напишут сами!
Чтобы подвести итог моего решения, попробуйте выполнить все или некоторые из следующих шагов:
- Оптимизация тестов - макеты, общие настройки и т. Д.
- Выполнить тесты параллельно
- Получите что-то еще для запуска тестов - сделайте это автономной задачей, используя Hudson или аналогичный
- Запускайте только те тесты, которые необходимо выполнить - сортируйте их по пакетам или используйте клевер и бамбук.