• 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);
        } 
    }
  • 相关阅读:
    jQuery Eazyui的学习和使用(一)
    PHP 红包功能代码
    PHPExcel 使用学习
    AngularJS 学习笔记
    sublime 快速生成html基础代码
    mysql 重置主键
    php 常用文件操作
    Android隐藏状态栏实现沉浸式体验
    MVC
    安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton
  • 原文地址:https://www.cnblogs.com/cuddles/p/6392540.html
Copyright © 2020-2023  润新知