2016-03-29 5 views
0

Метод DAOClass.makeDBConnection() возвращает источник данных, настроенный (используя поиск) в Application Server (Jboss). Необходимо выполнить тестовый пример junit для этого сценария.подавляющее исключение NullPointerException в Mockito?

Используя Mockito, протестируйте метод DAO следующим образом. Поскольку он не может найти источник данных (как и ожидалось), он возвращает NullPointerException. Как обращаться с NullPointerException и вернуть соединение, которое я создаю в нижнем коде? ИЛИ существует ли какая-либо другая лучшая модульная тестовая среда, которая обрабатывает этот сценарий?

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    Connection conn = DriverManager.getConnection("jdbc:sqlserver://DB:1433;DatabaseName=databasename", "userid", "password"); 

    when(DAOClass.makeDBConnection()).thenReturn(conn); 

ответ

0

Моккито не может издеваться над статическим методом, так оно и есть; он эффективно работает путем динамического переопределения всех методов через сгенерированный подкласс (прокси).

Вам нужно будет написать класс обертки вокруг статических методов, которые вы хотите высмеять, в противном случае реорганизовать код, чтобы избежать статического вызова, или использовать такой инструмент, как PowerMock, для перезаписи байт-кода вашей системы во время выполнения.

+0

Мне интересно, как статические вызовы методов вызывают проблему? даже если я создаю объект DAOClass и вызывается метод makeDBConnection(), он все равно бросает исключение NullPointerException. – Kumar

+0

, когда вы говорите «даже если я создаю объект DAOClass и вызываю метод makeDBConnection()», является ли метод неподвижным? Или вы его изменили? –

+0

На основании соглашения об именах я предположил, что вы вызывали 'makeDBConnection' в самом классе DAOClass, а не в экземпляре, поэтому я предположил, что он является статическим. Таким образом, ваша проблема заключается не в том, чтобы избежать или пресечь исключение NullPointerException, это переработка вашего теста, поэтому вы устанавливаете ожидания на экземплярах объектов и вставляете эти экземпляры объектов в свой тест. –