package com.captaindebug; import static org.junit.Assert.assertEquals; import static org.powermock.api.easymock.PowerMock.createPartialMock; import static org.powermock.api.easymock.PowerMock.expectPrivate; import static org.powermock.api.easymock.PowerMock.replay; import static org.powermock.api.easymock.PowerMock.verify; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; @RunWith(PowerMockRunner.class) @PrepareForTest(GameStatistics.class) public class PrivateMethodTest { @Test public final void testMockPrivateMethod() throws Exception { final String methodToTest = "crunchNumbers"; final String expected = "100%"; // create a partial mock that can mock out one method */ GameStatistics instance = createPartialMock(GameStatistics.class, methodToTest); expectPrivate(instance, methodToTest).andReturn(true); replay(instance); final long startTime = System.currentTimeMillis(); String result = instance.calculateStats(); final long duration = System.currentTimeMillis() - startTime; verify(instance); assertEquals(expected, result); System.out.println("Time to run test: " + duration + "mS"); } }