package samples.junit4.strict;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import samples.strict.StrictDemo;
import static org.powermock.api.easymock.PowerMock.*;
/**
* This is a simple test case for the {@link StrictDemo} class that demonstrates
* that strict method mocking works.
*
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest(StrictDemo.class)
public class StrictDemoTest {
@Test
public void testCallB_notStrict() throws Exception {
StrictDemo tested = createPartialMock(StrictDemo.class, "A", "B");
expectPrivate(tested, "B").times(1);
expectPrivate(tested, "A").times(1);
replay(tested);
tested.callAThenB();
verify(tested);
}
@Test(expected = AssertionError.class)
public void testCallB_strict_failure() throws Exception {
StrictDemo tested = createStrictPartialMock(StrictDemo.class, "A", "B");
expectPrivate(tested, "B").times(1);
expectPrivate(tested, "A").times(1);
replay(tested);
tested.callAThenB();
verify(tested);
}
@Test
public void testCallB_strict_ok() throws Exception {
StrictDemo tested = createStrictPartialMock(StrictDemo.class, "A", "B");
expectPrivate(tested, "A").times(1);
expectPrivate(tested, "B").times(1);
replay(tested);
tested.callAThenB();
verify(tested);
}
}