package samples.junit4.expectnew; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import samples.expectnew.PrimitiveAndWrapperDemo; import samples.expectnew.PrimitiveAndWrapperUser; import static org.easymock.EasyMock.expect; import static org.junit.Assert.assertEquals; import static org.powermock.api.easymock.PowerMock.*; /** * Unit test for the {@link PrimitiveAndWrapperUser} class. */ @RunWith(PowerMockRunner.class) @PrepareForTest(PrimitiveAndWrapperUser.class) public class PrimitiveAndWrapperUserTest { @Test public void testNewWithStrictMocking_ok() throws Exception { PrimitiveAndWrapperDemo mock1 = createStrictMockAndExpectNew(PrimitiveAndWrapperDemo.class, new Class<?>[] { Integer.class }, 42); PrimitiveAndWrapperDemo mock2 = createStrictMockAndExpectNew(PrimitiveAndWrapperDemo.class, new Class<?>[] { int.class }, 21); expect(mock1.getMyInt()).andReturn(10); expect(mock2.getMyInt()).andReturn(21); replayAll(); assertEquals(31, new PrimitiveAndWrapperUser().useThem()); verifyAll(); } @Test(expected = AssertionError.class) public void testNewWithStrictMocking_notOk() throws Exception { PrimitiveAndWrapperDemo mock2 = createStrictMockAndExpectNew(PrimitiveAndWrapperDemo.class, new Class<?>[] { int.class }, 21); PrimitiveAndWrapperDemo mock1 = createStrictMockAndExpectNew(PrimitiveAndWrapperDemo.class, new Class<?>[] { Integer.class }, 42); expect(mock1.getMyInt()).andReturn(10); expect(mock2.getMyInt()).andReturn(21); replayAll(); assertEquals(31, new PrimitiveAndWrapperUser().useThem()); verifyAll(); } @Test public void testNewWithNiceMocking() throws Exception { PrimitiveAndWrapperDemo mock = createNiceMockAndExpectNew(PrimitiveAndWrapperDemo.class, new Class<?>[] { Integer.class }, 42); expect(mock.getMyInt()).andReturn(2); replayAll(); assertEquals(2, new PrimitiveAndWrapperUser().useThem()); verifyAll(); } }