使用 Mockito NullPointerException 模拟 StoredProcedureQuery
Mock StoredProcedureQuery with Mockito NullPointerException
我正在 Spring 引导应用程序中以下列方式测试服务层:
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class ADPTest {
@InjectMocks
private ADPsService ADPsService;
@Test
public void getADPsDetails() {
ADPsStoredDetails e = new ADPsStoredDetails();
e.setAlert(STRING_VALUE);
e.setTsid(STRING_VALUE);
List<ADPsStoredDetails> ADPsStoredDetails = new ArrayList<ADPsStoredDetails>();
ADPsStoredDetails.add(e);
EntityManager targetEm = mock(EntityManager.class);
StoredProcedureQuery query = mock(StoredProcedureQuery.class);
Mockito.when(targetEm.createStoredProcedureQuery("dbo.getADPsinfo","ADPsDetails")).thenReturn(query);
Mockito.when(query.getResultList()).thenReturn(ADPsStoredDetails);
List<ADPDTO> actionsDTO = ADPsService.getADPsDetails();
assertTrue("List has values", actionsDTO.size() > 0);
}
}
我正在测试的方法具有以下签名
public List<ADPDTO> getADPsDetails() {
// TODO Auto-generated method stub
StoredProcedureQuery ADPsDetailsStoredProcedure = manager.createStoredProcedureQuery(
"dbo.getADPsinfo","ADPsDetails");
List<ADPsStoredDetails> results = ADPsDetailsStoredProcedure.getResultList();
Map<String, List<ADPsStoredDetails>> result = results.stream()
.collect(Collectors.groupingBy(ADPsStoredDetails::getTsid));
List<ADPDTO> ADPDTO = new ArrayList<ADPDTO>();
for (Map.Entry<String, List<ADPsStoredDetails>> entry : result.entrySet()) {
ADPDTO e = new ADPDTO();
e.setTsName(entry.getKey());
e.setAlerts(entry.getValue());
ADPDTO.add(e);
}
我在
的服务方法中得到 java.lang.NullPointerException
StoredProcedureQuery ADPsDetailsStoredProcedure = manager.createStoredProcedureQuery(
"dbo.getADPsinfo","ADPsDetails");
请帮忙解决。
您没有为要注入的 InjectMocks
创建 Mock
个实例。将 targetEm
的创建移动为实例变量。
@InjectMocks
private ADPsService ADPsService;
@Mock
private EntityManager targetEm;
我正在 Spring 引导应用程序中以下列方式测试服务层:
import static org.mockito.Mockito.mock;
@RunWith(MockitoJUnitRunner.class)
public class ADPTest {
@InjectMocks
private ADPsService ADPsService;
@Test
public void getADPsDetails() {
ADPsStoredDetails e = new ADPsStoredDetails();
e.setAlert(STRING_VALUE);
e.setTsid(STRING_VALUE);
List<ADPsStoredDetails> ADPsStoredDetails = new ArrayList<ADPsStoredDetails>();
ADPsStoredDetails.add(e);
EntityManager targetEm = mock(EntityManager.class);
StoredProcedureQuery query = mock(StoredProcedureQuery.class);
Mockito.when(targetEm.createStoredProcedureQuery("dbo.getADPsinfo","ADPsDetails")).thenReturn(query);
Mockito.when(query.getResultList()).thenReturn(ADPsStoredDetails);
List<ADPDTO> actionsDTO = ADPsService.getADPsDetails();
assertTrue("List has values", actionsDTO.size() > 0);
}
}
我正在测试的方法具有以下签名
public List<ADPDTO> getADPsDetails() {
// TODO Auto-generated method stub
StoredProcedureQuery ADPsDetailsStoredProcedure = manager.createStoredProcedureQuery(
"dbo.getADPsinfo","ADPsDetails");
List<ADPsStoredDetails> results = ADPsDetailsStoredProcedure.getResultList();
Map<String, List<ADPsStoredDetails>> result = results.stream()
.collect(Collectors.groupingBy(ADPsStoredDetails::getTsid));
List<ADPDTO> ADPDTO = new ArrayList<ADPDTO>();
for (Map.Entry<String, List<ADPsStoredDetails>> entry : result.entrySet()) {
ADPDTO e = new ADPDTO();
e.setTsName(entry.getKey());
e.setAlerts(entry.getValue());
ADPDTO.add(e);
}
我在
的服务方法中得到java.lang.NullPointerException
StoredProcedureQuery ADPsDetailsStoredProcedure = manager.createStoredProcedureQuery(
"dbo.getADPsinfo","ADPsDetails");
请帮忙解决。
您没有为要注入的 InjectMocks
创建 Mock
个实例。将 targetEm
的创建移动为实例变量。
@InjectMocks
private ADPsService ADPsService;
@Mock
private EntityManager targetEm;