Powermock - Verspotten eines Super-Methodenaufrufs

Hier ist mein Code -

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;

import org.powermock.core.classloader.annotations.*;
import static org.powermock.api.support.SuppressCode.*;

class BaseService {
    public int save() {
        validate();
        return 2;
    }

    public static int save2() {
        return 5;
    }

    public void validate() {
        System.out.println("base service save executing...");
    }
}

class ChildService extends BaseService {
    public int save() {
        System.out.println("child service save executing...");
        int x = super.save2();
        int y = super.save();
        System.out.println("super.save returned " + y);
        load();
        return 1 + x;
    }

    public void load() {
        System.out.println("child service load executing...");
    }
}

@RunWith(PowerMockRunner.class)
@PrepareForTest(BaseService.class)
public class PreventSuperInvocation {

    @Test
    public void testSave() throws Exception {

        org.powermock.api.support.Stubber.stubMethod(BaseService.class,
                "save2", 4);
        suppressMethod(BaseService.class, "save");
        ChildService childService = new ChildService();
        System.out.println(childService.save());
    }

}

Ich würde mich gerne lustig machensuper.save() imChildService Klasse. Aber ich kann keinen Weg finden, es zu tun.suppressMethod() unterdrückt nur und gibt einen Standardwert zurück (0 im obigen Fall). Und solche SachenMemberModifier, Stubber, MethodProxy funktionieren nur für statische Methoden.

Gibt es eine Möglichkeit, dies in Powermock zu tun?

Ich benutze Powermock 1.5 und Mockito 1.9.5.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage