junit+powermock+mockito静态方法测试

<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.6</version>

准备工作:@Runwith PowerMockRunner.class
@PrepareForTest 所有要mock的静态类
@RunWith(PowerMockRunner.class)
@PrepareForTest({RequestConvertUtil.class, JsonUtil.class,IPUtil.class,BaseInterfaceUtil.class,RSACoder.class,CookieUtils.class,URLEncoder.class})
public class LoginControllerTest {


mockStatic方法:mock有静态方法的类
mockStatic(BaseInterfaceUtil.class);
when(BaseInterfaceUtil.getServiceEncryptkeyByCode("autoLogin")).thenReturn(rsaKeyMap);

具体参照
http://www.cnblogs.com/hunterCecil/p/5721468.html
http://huangyunbin.iteye.com/blog/2176728
package com.suning.finance.phonepad.controller.bankcard;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.suning.finance.phonepad.SNConstants;
import com.suning.finance.phonepad.baseserver.bean.ServiceBean;
import com.suning.finance.phonepad.baseserver.service.StaticBaseService;
import com.suning.finance.phonepad.bizservices.baseservice.InterBaseService;
import com.suning.finance.phonepad.bizservices.ppp.PppService;
import com.suning.finance.phonepad.encrypt.PBECoder;
import com.suning.finance.phonepad.util.SensitiveDataUtil;
import com.suning.finance.phonepad.util.StringUtil;
import org.apache.commons.collections.map.HashedMap;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.mock.web.MockHttpSession;

import java.util.Map;

import static com.suning.epp.puma.BeanUtil.toGeneric;
import static com.suning.epp.puma.PumaAssert.assertCompare;
import static org.mockito.Matchers.anyMap;
import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;

/** 
* TransferServlet Tester. 
* 
* @author <Authors name> 
* @since <pre>02/09/2017</pre> 
* @version 1.0 
*/ 
@RunWith(PowerMockRunner.class)
@PrepareForTest({StringUtil.class})
public class TransferServletTest {  
    private final static Logger LOGGER = LoggerFactory.getLogger(TransferServletTest.class);
    
    @Rule
    public MockitoRule rule = MockitoJUnit.rule();
    @InjectMocks
    private TransferServlet transferServlet;
    @Mock
    private PppService pppService;
    @Mock
    InterBaseService service;

    @Test
    public void transfer_sdk_create_order() throws Exception { 
        MockHttpServletRequest givenRequest = new MockHttpServletRequest();
        givenRequest.setParameter("service","transfer_sdk_create_order");
        
        MockHttpServletResponse givenResponse = new MockHttpServletResponse();
        
        MockHttpSession givenSession = new MockHttpSession();
        givenSession.setAttribute(SNConstants.FTIS_ACCOUNT_NO,"1234567980");
        
        Object expectResult = toGeneric("TransferSDKSuccess.json",new TypeReference<Object>(){});
        Map<String, Object> transferToCardMap =toGeneric("TransferSDKSuccess.json",new TypeReference<Map>(){});
        
        when(pppService.transferToCardCreateOrder(anyMap())).thenReturn(transferToCardMap);
        mockStatic(StringUtil.class);
        when(StringUtil.getInfoParamStringByPBEData(givenRequest)).thenReturn(anyString());
        Object result = transferServlet.transfer(givenRequest,givenResponse);
        LOGGER.info("expectResult:{}", JSON.toJSON(expectResult));
        LOGGER.info("result:{}", JSON.toJSON(result));
        assertCompare(result, expectResult);
    } 
}

 

posted on 2017-02-13 09:41  Cuddles  阅读(1026)  评论(0编辑  收藏  举报

导航