Java如何通过PowerMockito或者Mockito实现某个类的父类方法的mock?

Java如何通过PowerMockito或者Mockito实现某个类的父类方法的mock? 要测试一个类,继承了父类,在类里直接调用了父类的一个方法g…
关注者
5
被浏览
53,518

3 个回答

stackoverflow有个类似的,希望能帮到你,也可以直接看 原文

public class Bar {
    public void bar() {
        System.out.println("Bar#bar()");
    public int numBar() {
        System.out.println("Bar#numBar()");
        return 99;
public class Foo extends Bar {
    public void bar() {
        super.bar();
        System.out.println("Foo#bar()");
    public int numBar() {
        System.out.println("Foo#numBar() - before-call super.numBar()");
        int result = super.numBar();
        System.out.println("Foo#numBar() - after-call super.numBar();");
        return result;
@RunWith(PowerMockRunner.class)
@PrepareForTest(Bar.class)
public class FooTest {
    @Test
    public void testBar() throws Exception {
        Method method = PowerMockito.method(Bar.class, "bar");
        // 抑制父类的这个方法执行
        PowerMockito.suppress(method);
        Foo foo = new Foo();
        foo.bar();
    @Test
    public void testNumBar() throws Exception {
        Method methodFoo = PowerMockito.method(Foo.class, "numBar");
        // 替换掉父类的方法
        PowerMockito.replace(methodFoo).with(new InvocationHandler() {
            @Override
            public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                return 1;