2016-09-16 3 views
0

Я пытаюсь создать макет данных для класса Dao. Тестовый пример выполняется успешно, но он возвращает нулевые данные. Я искал и реализовал @Mock, @InjectMocks, Inititated MockitoAnnotation, но все же он не работает. Проект весной. Контекстный путь также верен. Я не использовал других методов. Сначала для запуска я пытаюсь просто вызвать метод и распечатать. Пожалуйста, помогите мне решить эту ошибку.Получение нулевого ответа при создании Mock Dao с использованием Mockito

RegionManager Класс:

@Service("regionManager") 
public class RegionManager implements RegionManagerIntf { 

    @Autowired 
    RegionDaoIntf regionInquiry; 

    private RegionDao regionDao; 

    @Override 
    public ListPojo retrieveData(String Id, String details, String code) { 
     return regionInquiry.retrievePData(Id, details, code); 
    } 

    public RegionDao getRegionDao() { 
     return regionDao; 
    } 

    public void setRegionDao(RegionDao regionDao) { 
     this.regionDao = regionDao; 
    } 


} 

ДАО Класс:

@Component 
public class RegionProcessorFactory implements RegionProcessorIntf { 

    private static final Logger logger = Logger 
      .getLogger(RegionProcessorFactory.class); 

    @Override 
    public ListPojo retrieveData(String Id, 
      String details, String code) { 
      ListPojo listPojo = new ListPojo(); 
      //Do some action 
      return listPojo; 
      } 
    } 

ListPojo:

It contains getter setters. 

испытаний Класс:

import static org.junit.Assert.assertEquals; 
import static org.mockito.Mockito.mock; 
import static org.mockito.Mockito.verify; 
import static org.mockito.Mockito.when; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.InjectMocks; 
import org.mockito.Mock; 
import org.mockito.MockitoAnnotations; 
import org.mockito.runners.MockitoJUnitRunner; 
import org.springframework.test.context.ContextConfiguration; 

import com.fasterxml.jackson.databind.ObjectMapper; 

@RunWith(MockitoJUnitRunner.class) 
@ContextConfiguration({"classpath*:spring/beanRefContext.xml"}) 
public class RegionManagerTest 
{ 
    private String Id = "12345"; 
    private String Code = "123"; 
    private String details = "12"; 

    ObjectMapper mapper; 

    @Mock 
    private RegionProcessorFactory dao; 

    @Mock 
    private ListPojo listPojo; 

    @InjectMocks 
    private RegionManager service; 

    /** 
    * Before method will be called before executing every test case 
    */ 
    @Before 
    public void initialize() { 
     System.out.println("In initialize"); 
     MockitoAnnotations.initMocks(this); 
     dao = mock(RegionProcessorFactory.class); 
     listPojo = mock(ListPojo.class); 

     service = new RegionManager(); 
     service.setRegionDao(dao); 
    } 

    @Test 
    public void CreateDatabaseMock() throws Exception 
    { 
     System.out.println("dao result :: "+dao.retrieveData(Id, "", "")); 

     when(dao.retrieveData(Id, "", "")).thenReturn(listPojo); 

     verify(dao).retrieveData(Id, "", ""); 
    } 

    /** 
    * After method will be called after executing every test case 
    */ 
    @After 
    public void TearDownClass() { 
    } 
} 
+0

Какова ошибка, которую вы получаете во время выполнения этого Junit? Одна возможная ошибка, которую я вижу в этом коде, заключается в том, что вы должны написать service = new RegionManager(); stmt перед MockitoAnnotations.initMocks (это) – Shubhi224

ответ

0

Во-первых: Если вы используете @RunWith(MockitoJUnitRunner.class) нет необходимости в более MockitoAnnotations.initMocks(this); на этом here

Второй: Все с @Mock будут издеваться и Mockito будет пытаться внедрить его в объект с аннотацией @InjectMocks который Mockito инстанцирование (в старых Mockito версии вы должны были создать объект самостоятельно), так следующие строки не нужны:

dao = mock(RegionProcessorFactory.class); 
listPojo = mock(ListPojo.class); 

service = new RegionManager(); 
service.setRegionDao(dao); 

Третье: фактическое исполнение должно прийти после того, как гася

@Test 
public void CreateDatabaseMock() throws Exception{ 
    when(dao.retrieveData(Id, "", "")).thenReturn(listPojo); 
    System.out.println("dao result :: "+dao.retrieveData(Id, "", "")); 
    verify(dao).retrieveData(Id, "", ""); 
}