Policy:
public class EpfLoggingMockPolicy implements PowerMockPolicy {
private static final String[] QUALIFIED_NAMES =
{"com.capitalone.epf.logging.*"};
@Override
public void applyClassLoadingPolicy(MockPolicyClassLoadingSettings
settings) {
settings.addFullyQualifiedNamesOfClassesToLoadByMockClassloader(QUALIFIED_NAMES);
}
@Override
public void applyInterceptionPolicy(MockPolicyInterceptionSettings
settings) {
// Setup up the impl class
Method getDataMethod = Whitebox.getMethod(LoggerManagerImpl.class,
"getLogger", Class.class);
Logger loggerMock = PowerMock.createNiceMock(Logger.class);
settings.stubMethod(getDataMethod, loggerMock);
// setup the interface
getDataMethod = Whitebox.getMethod(LoggerManager.class,
"getLogger", Class.class);
settings.stubMethod(getDataMethod, loggerMock);
}
}
Test:
@RunWith(PowerMockRunner.class)
@MockPolicy(EpfLoggingMockPolicy.class)
public class EpfLoggingMockPolicyTest {
@Test
public void assertThatMyFirstMockPolicyWork() throws Exception {
// This test works
Logger logger = new LoggerManagerImpl()
.getLogger(EpfLoggingMockPolicyTest.class);
assertThat("Expected a host name match", logger,
instanceOf(Proxy.class));
logger.debug("Testing");
}
@Mock
LoggerManager loggerManager;
@Test
public void assertMockPolicyFails() throws Exception {
// This test fails