Я новичок в Mockito и Powermockito. У меня есть класс для тестирования, который взаимодействует с базой данных, чтобы найти, а также удалить данные из базы данных с помощью различных методов publi c. Это типичное приложение Java EE, и тестируемый класс принадлежит пакету услуг в Businesslogi c. Метод, который я хочу проверить, выглядит следующим образом:
public List<QuestionDtoWrapper> searchInQuestions(final Integer ID, final Integer catID,
final String searchString, final String language) {
final List<QuestionDtoWrapper> result = new ArrayList<>();
//In line below I get null pointer exception although I have stubbed this method
final List<QuestionDtoInt> questions = facade.findQuestionsByCatTemplate(ID, catID,
searchString, language);
for (final QuestionDtoInt question : questions) {
result.add(new QuestionDtoWrapper(question));
}
Collections.sort(result, new QuestionComparator(new Locale("de")));
return result;
}
Вот как я пытался проверить метод в своем тесте Junit:
@RunWith(MockitoJUnitRunner.class)
@PrepareForTest(QuesService.class)
public class QuesServiceTest {
@Mock
QuesFacade mockFbFacade;
@Mock
List<QuesDtoInt> questions;
@Spy
QuesService myService = new QuesService();
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void testSearchInQuestions() throws ParseException {
PowerMockito.doReturn(questions).when(mockFbFacade).findQuestionsByCatTemplate(anyInt(), anyInt(), anyString(), anyString());
List<QuestionDtoWrapper> res = null ;
res = myService.searchInQuestions(anyInt(), anyInt(), anyString(), anyString());
assertNotNull(res);
}
Я получаю исключение нулевого указателя в Строка, где метод вызывает другой метод. Смотрите мой комментарий в исходном коде. Может кто-нибудь, пожалуйста, дайте мне знать:
1) Я использую mockito для правильного предмета? Должен ли я использовать реальные данные испытаний? Но как насчет соединений с базой данных? Я попробовал этот подход и в итоге использовал только Mockito.
2) Почему я получаю исключение нулевого указателя, хотя я заглушил этот метод с Powermockito?
3), пожалуйста, предоставьте ваши ценные предложения для тестирования указанный метод правильно.
Примечание: - Мне не разрешается выполнять рефакторинг в коде.