Исключение нулевого указателя в методе, который вызывает другой метод Mockito - PullRequest
0 голосов
/ 10 февраля 2020

Я новичок в 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), пожалуйста, предоставьте ваши ценные предложения для тестирования указанный метод правильно.

Примечание: - Мне не разрешается выполнять рефакторинг в коде.

...