PowerMock笔记-spy和private


public class EmployeeService {
    public void foo(){
        log();
    }
    public void foo(String str){
        log();
    }
    public void log(){
        System.out.println("I am console log");
    }

    public boolean exist(String name){
        return checkExist(name);
    }

    private boolean checkExist(String name) {
        throw new UnsupportedOperationException();
    }
}
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.junit.Assert.*;
@RunWith(PowerMockRunner.class)
@PrepareForTest(EmployeeService.class)
public class EmployeeServiceTest {
    /**
     * 因为是Mock出来的EmployeeService,所以不会有输出
     */
    @Test
    public void testFoo(){
        EmployeeService employeeService = PowerMockito.mock(EmployeeService.class);
        employeeService.foo();
    }

    /**
     * 使用spy方法,相当于创建一个实际的对象,会有输出
     */
    @Test
    public void testFoo2(){
        EmployeeService employeeService1 = PowerMockito.spy(new EmployeeService());
        employeeService1.foo();
    }

    /**
     *  当我们执行 employeeService.foo("hello");则不会有输出
     *  当我们执行employeeService.foo("world");则会有输出
     */
    @Test
    public void testFoo3(){
        EmployeeService employeeService = PowerMockito.spy(new EmployeeService());
        String arg = "hello";
        PowerMockito.doNothing().when(employeeService).foo(arg);
        employeeService.foo("hello");
    }

    @Test
    public void testCheck(){
        try{
            EmployeeService employeeService = PowerMockito.spy(new EmployeeService());
            //checkExist方法传递andy的时候,返回true
            PowerMockito.doReturn(true).when(employeeService,"checkExist","andy");
           Assert.assertTrue(employeeService.exist("andy"));//为andy的时候,运行正常;输入其他的时候,返回异常
        }catch (Exception e){
            Assert.fail();
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值