Я бы решил эту проблему так же, как и любую другую проблему производительности:
- Не делайте предположений о том, в чем проблема
- Анализ выполнения теста с помощью профилировщика для определения горячих точек
- Анализ горячих точек по одному, повторное тестирование после каждого изменения кода.
Вы можете обнаружить, что в конце концов вам придется копаться в этом бегунах. Вы можете использовать инструмент декомпиляции, такой как cavaj , чтобы сгенерировать исходный код из файла класса (хотя его будет труднее читать, чем исходный код, очевидно). Вы можете обнаружить, что что-то в реализации тестового прогона влияет на производительность. Например, вы уже упомянули чтение файлов конфигурации XML как действие, выполняемое исполнителем теста - это то, что может потенциально снизить производительность.
Еще одна область, где вы можете в конечном итоге обнаружить проблемы с производительностью, - это настраиваемые «базовые» классы тестовых примеров. Это, как правило, вещи, которые добавляют много удобства, но может быть сложно вспомнить, что ваши поведения, добавляющие удобство, потенциально амортизируются в течение 10 тыс. Тестов в большом проекте, независимо от того, требуется ли каждому тесту удобное поведение или нет. 1015 *