Попытка издеваться ниже:
//Class
final InformationSection infoSec = new InformationSection("123");
со следующим:
//Test
PowerMockito.suppress(MemberMatcher.constructorsDeclaredIn(InformationSection.class));
InformationSection infoSec = mock(InformationSection.class);
when(InformationSection.class).withArguments(Mockito.anyString()).thenReturn(infoSec);
Конструктор InformationSection
, который я пытаюсь подавить, внутренне выполняет Integer.parseInt("123")
для вызова другой конструктор того же класса с аргументом Integer, который выбрасывает NumberFormatException
:
java.lang.NumberFormatException: null
at java.lang.parseInt(Integer.java:615)
InformationSection.<init>(InformationSection.java:40)
Итак, я запутался, если я подавляю конструктор, почему он все еще выполняет этот синтаксический анализ? Я имею в виду: Что означает в исключении Java? Это происходит до подавления конструктора? Если да, то как мы можем справиться с этим сценарием?