Unit testing 朱尼特和莫基托
我正在用Mockito测试一个Spring impl类 有一个对返回void的方法的调用 但是该方法(Unit testing 朱尼特和莫基托,unit-testing,mockito,Unit Testing,Mockito,我正在用Mockito测试一个Spring impl类 有一个对返回void的方法的调用 但是该方法(addCruiseMessages)正在返回NullPointerException,因为它调用了一个属性文件 我怎样才能成功地测试它 Impl类: @Path(CruisePricingConstants.SAVE_CRUISE_RESTRICTION) public Integer saveCruiseRestrictionDetails (List<CruisePricingCrui
addCruiseMessages
)正在返回NullPointerException
,因为它调用了一个属性文件
我怎样才能成功地测试它
Impl类:
@Path(CruisePricingConstants.SAVE_CRUISE_RESTRICTION)
public Integer saveCruiseRestrictionDetails (List<CruisePricingCruiseDetailsVO> cruiseDetailsVOs){
List<MessageVO> messageVOs = new ArrayList<MessageVO>();
MessageVO message = null;
for(CruisePricingCruiseDetailsVO cruisePricingCruiseDetailsVO : cruiseDetailsVOs)
{
int listLength = cruisePricingCruiseDetailsVO.getViewImpactedCruisesDefinintionVOs().size();
if(listLength > CruisePricingConstants.ONE)
{
Set<CruisePricingViewImpactedCruisesDefinintionVO> set = new HashSet<CruisePricingViewImpactedCruisesDefinintionVO>() ;
set.addAll(cruisePricingCruiseDetailsVO.getViewImpactedCruisesDefinintionVOs());
if(set.size()<listLength)
{
message = new MessageVO("msg.searchAndListViewImpactedCruisesWidget.duplicateRecordExist", SproutUtil.getMessage("msg.searchAndListViewImpactedCruisesWidget.invalidCombination"), ErrorSeverity.ERROR);
messageVOs.add(message);
WebExceptionUtil.addMessagesToResponse(messageVOs);
return CruisePricingConstants.ONE;
}
}
}
LOGGER.debug("CruisePricingViewImpactedCruisesServiceImpl :: saveCruiseRestrictionDetails :: Entry");
Integer rateID = viewImpactedCruisesComponent.saveCruiseRestrictionDetails(cruiseDetailsVOs);
if(rateID==CruisePricingConstants.ONE){
addCruiseMessages();
}
LOGGER.debug("CruisePricingViewImpactedCruisesServiceImpl :: saveCruiseRestrictionDetails :: Exit");
return rateID;
}
@Path(CruisePricingConstants.SAVE\u CRUISE\u限制)
公共整数saveCruiseRestrictionDetails(列出cruiseDetailsVOs){
List messageVOs=new ArrayList();
MessageVO message=null;
适用于(CruisePricingCruiseDetailsVO CruisePricingCruiseDetailsVO:cruiseDetailsVOs)
{
int listLength=cruisePricingCruiseDetailsVO.GetViewImpactedCruisesDefinitionVos().size();
如果(listLength>CruisePricingConstants.ONE)
{
Set=newhashset();
set.addAll(cruisePricingCruiseDetailsVO.GetViewImpactedCruiseDefinitionVos());
如果(set.size()如果SproutUtil.getMessage
是导致问题的方法,那么您必须:
1)提取到getter方法:
public String getMessage(String message) {
return SproutUtil.getMessage(message);
}
2)更改实现,使其调用getter,而不是显式调用静态util:
message = new MessageVO("msg.searchAndListViewImpactedCruisesWidget.duplicateRecordExist"
,getMessage("msg.searchAndListViewImpactedCruisesWidget.invalidCombination"), ErrorSeverity.ERROR);
3)用Spy注释CruisePricingViewImpactedCruiseComponent(我相信有些方法实际上是您想要调用的):
4)模仿吸气剂
when(cmp.getMessage(Mockito.any(String.class))).thenReturn("anyString");
试试看。你能粘贴你得到的错误并粘贴引发异常的方法的代码吗?除了有问题的方法外,其他方法的代码都有没有帮助。Messagevo MVO=new messagev这里是导致异常的junit方法:Public void getMessage(){messageVOs=new ArrayList();message=new MessageVO(“msg.searchAndListViewImpactedCruisesWidget.recordMergedSuccessfully”,SproutUtil.getMessage(“msg.searchAndListViewImpactedCruisesWidget.recordSavedSuccessfully”),ErrorSeverity.FINE;messageVOs.add(message);WebExceptionUtil.AddMessageStoreResponse(messageVOs);}nullpointer被抛出到从属性文件获取消息的sproututil类。sproututil是一个java类
@Spy
private CruisePricingViewImpactedCruisesComponent cmp;
when(cmp.getMessage(Mockito.any(String.class))).thenReturn("anyString");