Тесты 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, такие как имитация частных или статических методов.