使用Mockito 对方法中的私有void方法,以及本类中的公共方法

这里用一段代码举例

public void ruleJudgement(Long tenantId, Long productId, Long equipId, List<ModelAttributeValue> modelAttributeValues, List<EquipReportValue> equipReportValues) {
           //这里是一些正常的方法
           // 这个是需要moke的私有方法
            executeAction(ruleId);
            //这个是需要moke的本类公共方法
            SysDictTypeVO dictType = selectDictTypeById(dictId);
        }
    }

public SysDictTypeVO selectDictTypeById(Long dictId) {
    //正常业务
}
private void executeAction(Long ruleId) {
    //又一个私有方法
     setFunctionRecordJson(modelFunctionRecord, rule.getDeptId());
}
private void setFunctionRecordJson(ModelFunctionRecord functionRecord, Long tenantId) {
    //正常业务
}

下面就是test测试方法

@Test
    public void ruleJudgementTest() throws Exception{
        //RuleJudgmentServiceImpl这个是你自己moke的那个类的名字
        RuleJudgmentServiceImpl spy = PowerMockito.spy(ruleJudgmentService);
        //这个是你moke的那个公共方法
        spy.ruleJudgement(11L,12L,13L,list,valueList);

        //第一个参数是你的私有方法名字,第二个参数就是你私有方法的参数
        PowerMockito.verifyPrivate(spy).invoke("setFunctionRecordJson",modelFunctionRecord,789L);

        PowerMockito.verifyPrivate(spy).invoke("executeAction",123L);
        
        //创建返回值需要的参数
        SysDictTypeVO sysDictTypeVO = new SysDictTypeVO();
        sysDictTypeVO.setDictType("1");
        //第一个参数是你方法的返回类型,第二个参数是上面创建的moke类别名,然后就是方法名跟上参数
        Mockito.doReturn(sysDictTypeVO).when(spy).selectDictTypeById(anyLong());
    }

 

posted @ 2023-02-01 13:46  Dshzs月  阅读(1260)  评论(0编辑  收藏  举报