0
我正在嘗試爲Dao類創建模擬數據。測試用例正在成功運行,但它返回空數據。我搜索並實現了@Mock,@InjectMocks,啓動MockitoAnnotation,但它仍然無法正常工作。該項目是在春天。上下文路徑也是正確的。我沒有使用任何其他方法。首先運行,我試圖調用一個方法並打印。請幫我解決這個錯誤。使用Mockito創建Mock Dao時獲得null響應
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;
}
}
DAO類:
@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() {
}
}
執行此Junit時遇到的錯誤是什麼?我可以在這段代碼中看到一個可能的錯誤,那就是你必須編寫service = new RegionManager();在MockitoAnnotations.initMocks(這個)之前, – Shubhi224