Тесты Powermock JUnit занимают больше времени по сравнению с обычным JUnit

Мы используем powermock для насмешки статических методов с помощью @PrepareForTest аннотаций. Тест выполняется нормально, но проблема в том, что для его выполнения требуется больше времени.

Фрагмент кода, как показано ниже:

@PrepareForTest({ StaticClass1.class, StaticClass2.class })

Обычно JUnit без использования статического метода занимает около 2 секунд, но когда мы добавим @PrepareForTest аннотация для проверки статических вызовов, тест занимает около минуты, чтобы завершить выполнение. Для одного теста это не большое влияние, но у нас есть более 1К тестов, и общее время сборки занимает более 2 часов, что раньше занимало около 20 - 30 минут.

Что может быть причиной того, что powermock отнимает так много времени?

Любая помощь будет принята с благодарностью.

1 ответ

PowerMock - это инструмент, который выполняет инструментарий байт-кода в ваших сгенерированных классах. Как только ваши классы скомпилированы в байт-код Java, PowerMock приходит и модифицирует эти сгенерированные классы. В противном случае (с помощью Java Proxy) невозможно смоделировать закрытый или статический метод.

Вы должны использовать только @PrepareForTest аннотации только в тех классах, для которых вы хотите использовать функции, исключительные для PowerMock, такие как имитация частных или статических методов.

Другие вопросы по тегам