Тестовый корпус бросает NPE при вызове измеченного методаJAVA

Программисты JAVA общаются здесь
Anonymous
Тестовый корпус бросает NPE при вызове измеченного метода

Сообщение Anonymous »

Я пытаюсь написать тестовый класс Mockito, чтобы покрыть некоторое взаимодействие с БД. Тестовый пример, который я пишу, должен вернуть ответ на заглушку, когда вызывается вызов базы данных, но он бросает NPE, пытаясь фактически создать подключение к базе данных. < /P>
Вот метод, который я пытаюсь проверить: < /p>
public class AdultDayCenterDBHandler extends DBTemplate implements AppConstants {
Logger logger = LogManager.getLogger(AdultDayCenterDBHandler.class);
public List retrieveAllAdultDayCenterFacilities(FacilitySearchCriteriaInf adcSearchCriteria) throws AdultDayCenterException
{
//Retrieve all the adult day care facilities.
logger.info("[retrieveAllAdultDayCenterFacilities]:[START]");
String sqlQuery = prepareQuery((FacilitySearchCriteriaInf)adcSearchCriteria);

SearchQuery searchQuery = new SearchQuery();
searchQuery.setSqlQuery(sqlQuery);
List adcList;
try {
if(null != logger) logger.debug("Sending Executing SQL query : " + searchQuery.getSqlQuery());
adcList = (List) callDB((SearchQuery)searchQuery);
} catch (DBException e) {
throw new AdultDayCenterException("Error ocurred in AdultDayCenterDBHandler while calling DB",e);
}

logger.info("[retrieveAllAdultDayCenterFacilities]:[END]");
return adcList;

}
< /code>
И вот тестовый пример: < /p>
@ExtendWith(MockitoExtension.class)
public class AdultDayCenterDBHandlerTest {

@Mock
private DBTemplate dbTemplate;
@Mock
private DBUtil dbUtil;

@InjectMocks
private AdultDayCenterDBHandler dbHandler;

@BeforeEach
public void setUp() {
assertNotNull(dbUtil);
assertNotNull(dbTemplate);
}

@Test
public void testRetrieveAllAdultDayCenterFacilities() throws Exception {
//Setup

List facilityList = generateStubData();
List responseFromTest = null;
ADCSearchCriteria adcSearchCriteria = generateSearchCriteria();

Mockito.when(dbTemplate.callDB(any(SearchQuery.class))).thenReturn(facilityList);

//Get Result Set
responseFromTest = dbHandler.retrieveAllAdultDayCenterFacilities(adcSearchCriteria);

//Assertions
assertNotNull(responseFromTest);
assertEquals(responseFromTest.get(0).getFacilityName(),facilityList.get(0).getFacilityName());
}

private List generateStubData() {
List response = new ArrayList();

FacilityEntity entity = new FacilityEntity();
entity.setFacilityName("Test Facility 1");
entity.setLicenseId(123456);
entity.setLocationAddressStreetNumber("1234");
entity.setLocationAddressLine1("Main Street");
entity.setLocationAddressCity("Mechanicsville");
entity.setLocationAddressStateName("VA");
entity.setLocationAddressZipCode("23116");
entity.setLocationCountyFips("51085");
entity.setLocationCountyDesc("Hanover");
entity.setAdministratorFirstName("Jane");
entity.setAdministratorSurname("Doe");
entity.setAdministratorTitle("Administrator");
entity.setBusinessPhoneNumber("804-301-2011");
entity.setClientCode("2101");

response.add(entity);

return response;
}

private ADCSearchCriteria generateSearchCriteria() {
ADCSearchCriteria criteria = new ADCSearchCriteria();

criteria.setFacilityName("Test Facility 1");
criteria.setProgramCode(PROGRAM_CODES.ADC_F);

return criteria;
}
}
< /code>
Я предполагаю, что мне нужно издеваться над дополнительным объектом, но я не уверен, почему эта строка: < /p>
Mockito.when(dbTemplate.callDB(any(SearchQuery.class))).thenReturn(facilityList);

//Get Result Set
responseFromTest = dbHandler.retrieveAllAdultDayCenterFacilities(adcSearchCriteria);
< /code>
не возвращается в мак -объект, который я определил. Он бросает NPE, пытаясь создать экземпляр dbutil.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ked-method

Вернуться в «JAVA»