Java 循环内部if条件的Junit测试用例
由于Java 循环内部if条件的Junit测试用例,java,junit,Java,Junit,由于NullPointerException,我的测试用例失败。另外,我不确定如何在junit中处理或调试此空错误 以下是测试用例代码: List<String> groupName = new ArrayList<String>(); when(claimGroupingHistoryRepository.getGroupingKeyName(1l)).thenReturn(groupName); service.updateClaimGroupingKeyForDea
NullPointerException
,我的测试用例失败。另外,我不确定如何在junit中处理或调试此空错误
以下是测试用例代码:
List<String> groupName = new ArrayList<String>();
when(claimGroupingHistoryRepository.getGroupingKeyName(1l)).thenReturn(groupName);
service.updateClaimGroupingKeyForDealer(dealer.getDealerId(), groupingKeyResource, userId);
以下是我得到的测试用例错误:
ClaimServiceImplTest.shouldUpdateClaimGroupingKeyForDealerUpdate:6057 » NullPointer
请找到我的完整测试文件
更新:1*
public void shouldUpdateClaimGroupingKeyForDealerUpdate() throws Exception {
Dealer dealer = make(a(DealerMaker.Dealer));
ClaimGroupingHistory claimGroupingHistory = make(a(ClaimGroupingHistoryMaker.ClaimGroupingHistory));
String userId = "/user/0001";
Status draft = make(a(Draft));
User user = make(a(UserMaker.User, with(UserMaker.id, userId),with(UserMaker.email, "user@example.com"))).toUser();
ArrayList<ClaimGroupingKeyMapping> mapping = new ArrayList<ClaimGroupingKeyMapping>();
ClaimGroupingKeyMapping e = new ClaimGroupingKeyMapping();
GroupingKeys groupingKeys= new GroupingKeys();
groupingKeys.setValue(1l);
groupingKeys.setCode("code");
e.setValue(1l);
e.setGroupingKeys(groupingKeys);
mapping.add(e);
ArrayList<GroupingKeys> grpKey = new ArrayList<GroupingKeys>();
grpKey.add(new GroupingKeys());
GroupingKeyResource groupingKeyResource = new GroupingKeyResource();
groupingKeyResource.setGroupingKeys(grpKey);
ArrayList<ClaimGroupingHistory> historyLog=new ArrayList<ClaimGroupingHistory>();
List<String> groupName=new ArrayList<String>();
when(claimGroupingHistoryRepository.getClaimGroupingHistory(dealer.getDealerId())).thenReturn(historyLog);
when(claimGroupingHistoryRepository.getGroupingKeyName(groupingKeys.getId())).thenReturn(groupName);
service.updateClaimGroupingKeyForDealer(dealer.getDealerId(), groupingKeyResource, userId);
}
public void shouldUpdateClaimGroupingKeyForDealerUpdate()引发异常{
经销商=制造(a(DealerMaker.Dealer));
ClaimGroupingHistory ClaimGroupingHistory=make(a(ClaimGroupingHistoryMaker.ClaimGroupingHistory));
字符串userId=“/user/0001”;
状态草稿=制作(草稿);
User User=make(a(UserMaker.User,with(UserMaker.id,userId),with(UserMaker.email,)user@example.com)toUser();
ArrayList映射=新的ArrayList();
ClaimGroupingKeyMapping e=新的ClaimGroupingKeyMapping();
GroupingKeys GroupingKeys=新的GroupingKeys();
分组键。设置值(1l);
groupingKeys.setCode(“代码”);
e、 设定值(1l);
e、 设置分组键(分组键);
添加(e);
ArrayList grpKey=新的ArrayList();
添加(新的GroupingKeys());
GroupingKeyResource GroupingKeyResource=新建GroupingKeyResource();
groupingKeyResource.setGroupingKeys(grpKey);
ArrayList historyLog=新的ArrayList();
List groupName=new ArrayList();
当(claimGroupingHistoryRepository.getClaimGroupingHistory(dealer.getDealerId())。然后返回(historyLog);
当(claimGroupingHistoryRepository.getGroupingKeyName(groupingKeys.getId()))。然后返回(groupName);
service.updateClaimGroupingKeyForDealer(dealer.getDealerId(),groupingKeyResource,userId);
}
除非我们看到分组键的定义,否则无法确定这一点,但获得NPE的原因是字段值
不是原语
为了避免NPE,你可以将分组键
,特别是值
初始化为某个数字。你上一篇关于这个问题的帖子已经结束,因为它是重复的,所以你重新开始它?可能重复@Stultuske-我确实理解NPE。但这里的例子是在for循环中为if条件编写测试用例代码。您对这种情况有什么想法吗?您甚至没有显示要测试的整个单元。请查找我更新的行GroupingKeys GroupingKeys=new GroupingKeys();分组键。设置值(1l)代码>。但我还是遇到了同样的问题。在执行此操作之前,应该设置值:grpKey.add(newgroupingkeys())代码>。否则,这毫无意义。我已经按照你的建议更新了我的代码。我还是遇到了同样的问题。请找到我的更新代码。
public void shouldUpdateClaimGroupingKeyForDealerUpdate() throws Exception {
Dealer dealer = make(a(DealerMaker.Dealer));
ClaimGroupingHistory claimGroupingHistory = make(a(ClaimGroupingHistoryMaker.ClaimGroupingHistory));
String userId = "/user/0001";
Status draft = make(a(Draft));
User user = make(a(UserMaker.User, with(UserMaker.id, userId),with(UserMaker.email, "user@example.com"))).toUser();
ArrayList<ClaimGroupingKeyMapping> mapping = new ArrayList<ClaimGroupingKeyMapping>();
ClaimGroupingKeyMapping e = new ClaimGroupingKeyMapping();
GroupingKeys groupingKeys= new GroupingKeys();
groupingKeys.setValue(1l);
groupingKeys.setCode("code");
e.setValue(1l);
e.setGroupingKeys(groupingKeys);
mapping.add(e);
ArrayList<GroupingKeys> grpKey = new ArrayList<GroupingKeys>();
grpKey.add(new GroupingKeys());
GroupingKeyResource groupingKeyResource = new GroupingKeyResource();
groupingKeyResource.setGroupingKeys(grpKey);
ArrayList<ClaimGroupingHistory> historyLog=new ArrayList<ClaimGroupingHistory>();
List<String> groupName=new ArrayList<String>();
when(claimGroupingHistoryRepository.getClaimGroupingHistory(dealer.getDealerId())).thenReturn(historyLog);
when(claimGroupingHistoryRepository.getGroupingKeyName(groupingKeys.getId())).thenReturn(groupName);
service.updateClaimGroupingKeyForDealer(dealer.getDealerId(), groupingKeyResource, userId);
}