У меня есть тестовый класс, где я запускаю тесты Mockito, например:
public class ViewModelTest {
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void openQuestion() {
viewModel.openQuestion(context, QUESTION_ID);
verify(questionRouter).open(context, QUESTION_ID); //just an example
}
}
Все работает как должно.Тем не менее, мне нужно смоделировать статический метод в одном из моих тестовых классов, поэтому я добавляю PowerMock в свой класс:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Uri.class)
public class ViewModelTest { ...
и зависимости:
testImplementation 'org.powermock:powermock-core:2.0.2'
testImplementation 'org.powermock:powermock-api-mockito2:2.0.2'
testImplementation 'org.powermock:powermock-module-junit4-rule-agent:2.0.2'
testImplementation 'org.powermock:powermock-module-junit4-rule:2.0.2'
testImplementation 'org.powermock:powermock-module-junit4:2.0.2'
Но когда я сейчас попробуючтобы выполнить тесты (скажем, у меня есть 15 методов тестирования), я получаю NPE для большинства методов тестирования:
java.lang.NullPointerException
at com.example.Viewmodel.prepare(StartViewModel.java:126)
Я получаю NPE даже в методе, в котором я пытаюсь смоделировать статический метод:
PowerMockito.mockStatic(Uri.class);
PowerMockito.when(Uri.parse(anyString())).thenReturn(otherUri);
Прежде чем вы понизите голосование и проголосуете за закрытие NPE, я действительно просмотрел большинство ответов на SO и других сайтах, перепробовал многие из них, ни один из которых не работал для меня.Я следовал инструкциям для Powermock, но все еще получаю эти ошибки, и я не понимаю, почему.Это мое последнее средство, чтобы попытаться решить эту проблему.