Mockito框架 mock 调用父类方法

当我们使用Mockito框架mock调用父类方法时,总是会真实去调用父类的方法,那怎么才能mock掉呢,下边直接上代码

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;

class Parent {
    public void save() {
        System.out.println("save...");
    }
}

class Child extends Parent {
    public void run() {
        System.out.println("run...");
        save();
    }
}

@RunWith(MockitoJUnitRunner.class)
public class CallParentTest {
    @InjectMocks
    private Child bean;

    @Before
    public void before() throws Exception {
        //因为Answers.CALLS_REAL_METHODS这个参数,可以保证真实方法的调用,这就可以作为方法调用的入口,进行单元测试;
        bean = Mockito.mock(Child.class, Answers.CALLS_REAL_METHODS);
        MockitoAnnotations.initMocks(this);
    }

    @Test
    public void test() {
        // mock 调用
        Mockito.doNothing().when(bean).save();
        bean.run();
    }
}

// ### 输出 
//    run...
posted @ 2022-06-23 14:15  ziyear  阅读(7677)  评论(2)    收藏  举报