package samples.powermockito.junit4.rule.objenesis; import org.junit.Rule; import org.junit.Test; import org.powermock.core.classloader.annotations.MockPolicy; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.core.spi.PowerMockPolicy; import org.powermock.mockpolicies.MockPolicyClassLoadingSettings; import org.powermock.mockpolicies.MockPolicyInterceptionSettings; import org.powermock.modules.junit4.rule.PowerMockRule; import org.powermock.reflect.Whitebox; import samples.powermockito.junit4.rule.objenesis.Foo.Bar; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @PowerMockIgnore({"org.mockito.*","org.powermock.api.mockito.repackaged.*"}) @PrepareForTest(Foo.class) @MockPolicy(PowerMockRuleTest.CustomPolicy.class) public class PowerMockRuleTest { @Rule public final PowerMockRule rule = new PowerMockRule(); @Test public void test1() { assertEquals(999, new Foo().m().getI()); } @Test public void test2() { assertEquals(999, new Foo().m().getI()); } public static class CustomPolicy implements PowerMockPolicy { @Override public void applyClassLoadingPolicy(MockPolicyClassLoadingSettings settings) { } @Override public void applyInterceptionPolicy(MockPolicyInterceptionSettings settings) { final Bar barMock = mock(Bar.class); when(barMock.getI()).thenReturn(999); settings.stubMethod(Whitebox.getMethod(Foo.class, "m"), barMock); } } }