У нас есть пара очень-очень медленных тестов JUnit, которые активно используют насмешки, в том числе насмешки над статическими функциями. Одиночные тесты занимают 20-30 секунд, весь «тест mvn» занимает 25 минут.
Я хочу проанализировать, где тратится время, но у меня мало опыта в профилировании.
Я предполагаю, что инициализация зависимых фиктивных объектов занимает слишком много времени.
Два вопроса:
1) Как быстро получить номера, на какие методы тратится время? Мне не нужен сложный инструмент для опытных пользователей, просто что-то базовое, чтобы получить цифры. (доказательство того, что наши насмешки — это зло)
2) Есть ли у вас идеи, какие недостатки дизайна могут привести к таким плохим таймингам? Мы тестируем компоненты поддержки JSF, которые должны вызывать фиктивные службы. Возможно, во вспомогательных компонентах может быть некоторая проверка ввода или бизнес-логика без рефакторинга, но это нельзя изменить (пожалуйста, не комментируйте это ;-))
объявление 2) Например, в одном тесте есть около 30 (!) классов, которые нужно подготовить к тесту с помощью @PrepareForTest. Это не может быть хорошо, но я не могу объяснить, почему.