Я пытаюсь издеваться над классом System, чтобы получить постоянное значение для currentTimeMillis (). Поскольку я не могу использовать Mockito для имитации финальных классов, я использую PowerMock, но при насмешке над System.currentTimeMillis () я получаю сообщение об ошибке «Невозможно разрешить метод, когда (долго)».
Мой код выглядит так:
PowerMockito.mockStatic(System.class);
when(System.currentTimeMillis()).thenReturn(CURRENT_TIME_STAMP);
Я также отметил свой класс как:
@RunWith(PowerMockRunner.class)
@PrepareForTest(System.class)
public class DateTimeUtilsTest {
2 ответа
Решено .
Это должно быть похоже
PowerMockito.when(System.currentTimeMillis()).thenReturn(CURRENT_TIME_STAMP);
Или импортируйте PowerMockito статически, как
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
Точно так же можно имитировать любой из методов класса System или любой другой конечный класс.
Вот почему вы должны сначала писать тесты, а затем не писать непроверяемый код.
Ваш код не должен напрямую обращаться к статике переходных процессов, а должен через компонент, который вы можете имитировать.
Похожие вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].