zoukankan      html  css  js  c++  java
  • 用PowerMock spy mock private方法

    在实际的工作中,经常碰到只需要mock一个类的一部分方法,这时候可以用spy来实现。

    被测类:

    public class EmployeeService {
    
        public boolean exist(String userName) {
            checkPrivateExist(userName);
            checkPublicExist(userName);
            return true;
        }
    
        private void checkPrivateExist(String userName) {
            throw new UnsupportedOperationException();
        }
        
        public void checkPublicExist(String userName){
            throw new UnsupportedOperationException();
        }
    }

    如果要测试exist方法,需要mock checkPublicExist和checkPrivateExist方法,而不希望mock exist方法

    测试类:

    @PrepareForTest(EmployeeService.class)
    public class EmployeeServiceTestWithPrivateTest  extends PowerMockTestCase{
        
        @ObjectFactory
        public ITestObjectFactory getObjectFactory() {
            return new PowerMockObjectFactory();
        }
    
        @Test
        public void testExist() {
            try {
                EmployeeService service = PowerMockito.spy(new EmployeeService());
                PowerMockito.doNothing().when(service,"checkPrivateExist","powermock");
                PowerMockito.doNothing().when(service).checkPublicExist("powermock");;
                boolean result = service.exist("powermock");
                Assert.assertTrue(result);
                Mockito.verify(service).checkPublicExist("powermock");
                PowerMockito.verifyPrivate(service).invoke("checkPrivateExist","powermock");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    }

    在测试类中,真实的调用了exist方法。

    需要注意的是对private方法的mock

    PowerMockito.doNothing().when(service,"checkPrivateExist","powermock");

    以及对exist方法调用过程的验证

    Mockito.verify(service).checkPublicExist("powermock");
    PowerMockito.verifyPrivate(service).invoke("checkPrivateExist","powermock");

  • 相关阅读:
    实验 6 数组1输出最大值和它所对应的下标
    实验5第二题
    实验5第一题
    作业 3 应用分支与循环结构解决问题 判断是否闰年
    心得与体会1
    第七章
    第六章
    第五章
    第四章
    第一章
  • 原文地址:https://www.cnblogs.com/changzhz/p/5163562.html
Copyright © 2011-2022 走看看