Here is my 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()); } }
I would like to make fun of super.save () in the ChildService class. But I canβt find a way to do this. SuppressMethod only suppresses and returns the default value (0 in the above case). And things like MemberModifier, Stubber, MethodProxy work only for static methods.
Is there a way to do this in Powermock?
I am using Powermock 1.5 and Mockito 1.9.5.
source share