для извлечения некоторых данных из унаследованного приложения, в настоящее время я использую powermock для подготовки нескольких довольно запутанных классов и замены нескольких зависимостей с помощью mocks.Powermock без JUnit
Таким образом, у меня есть тест JUnit, который по существу делает:
@RunWith(PowerMockRunner.class)
@PrepareForTest(LegacyDependency.class)
public class ThisIsNotReallyATest {
@Test
public void extractData() {
... prepare and wire mocks
// new ClassUnderTest() will essentally call LegacyDependency.getInstance()
Object result = new ClassUnderTest().doSomething();
// save result for later reference
}
}
Таким образом: это не тест. Это класс утилиты, который использует функции Powermock, чтобы обойти различные сильно моделируемые зависимости.
Как с помощью тестовой основы для создания утилита, которая не подключена к блоку тестирования вообще заставляет меня чувствовать себя очень плохо, вопрос:
Могу ли я использовать powermock (особенно на функцию PrepareForTest для статического/окончательны./etc.) в автономном программном обеспечении? Если да: как?
Вы неправильно используете рамки для чего-то, для чего не предназначены. Если у вас есть контроль над исходным кодом устаревшего приложения, вы должны его реорганизовать, а затем сделать это. Готовы ли вы к сбоям проверки байт-кода в производстве? (да, это то, что может принести вам powermock) – rkosegi
Речь идет о инструменте, который является частью подготовки базового теста для предстоящего рефакторинга. Это просто для временного использования, очищая часть этого беспорядка. – mtj
Кажется, что вы просто используете замену/генерацию байт-кода runtime в Powermock. Почему бы вам просто не использовать Javassist или ByteBuddy и так далее? –