jmockit單元測試中有私有方法怎麼處理

直接上代碼哈,app

首先是待測試的service(其中調用了私有方法)單元測試

public ResponseResult achieveMedal(String autoshowCode, String medalCode, Integer userId, String tempUserId) {
    ResponseResult responseResult = new ResponseResult();
    responseResult.setReturncode(-1);
    AsUserIntegral asUserIntegral = new AsUserIntegral();
    int integral = getMedalIntegralByMedalCode(autoshowCode, medalCode);
    if(integral >0){
        asUserIntegral.setIntegral(integral);
    }else {
        responseResult.setMessage("勳章不存在");
        return responseResult;
    }
   return responseResult;
}
private int getMedalIntegralByMedalCode(String autoshowCode, String medalCode){
    return 1;
}

下面是jmockit進行單元測試的方法測試

@Test
public void achieveMedalTest(){
    final String autoshowCode = "frankfurt";
    final String medalCode = "3003";
    final String tempUserId = "14951641585723303";
    final Integer userId = 44388195;
    new MockUp<IntegralServiceImpl>(){
        @Mock
        private int getMedalIntegralByMedalCode(String autoshowCode, String medalCode){
            return 100;
        }
    };
    new NonStrictExpectations(){//錄製預期模擬行爲
        {
            asUserIntegralMapper.selectMedalCountByCond((AsIntegralCond) any);
            result = 0;
            asUserIntegralMapper.insertSelective((AsUserIntegral) any);
            result = 1;
        }
    };
    ResponseResult result = targetObject.achieveMedal(autoshowCode,medalCode, userId, tempUserId);
    Assert.assertEquals(result.getResult(), 100);
}

着重看綠色的部分,getMedalIntegralByMedalCode方法是個人私有方法,測試時,指望的返回值是100。這樣私有方法就能spa

相關文章
相關標籤/搜索