Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 循环内部if条件的Junit测试用例_Java_Junit - Fatal编程技术网

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);

    }