1 package mockit.integration.junit4; 2 3 import static org.junit.jupiter.api.Assertions.assertEquals; 4 5 import mockit.Mock; 6 import mockit.MockUp; 7 8 import org.junit.After; 9 import org.junit.BeforeClass; 10 import org.junit.Test; 11 12 public final class JUnit4DecoratorTest extends BaseJUnit4DecoratorTest { 13 public static final class RealClass2 { 14 public String getValue() { 15 return "REAL2"; 16 } 17 } 18 19 public static final class FakeClass2 extends MockUp<RealClass2> { 20 @Mock 21 public String getValue() { 22 return "TEST2"; 23 } 24 } 25 26 @BeforeClass 27 public static void beforeClassThatRunsSecond() { 28 assertEquals("TEST0", new RealClass0().getValue()); 29 } 30 31 @BeforeClass 32 public static void beforeClassThatRunsFirst() { 33 assertEquals("TEST0", new RealClass0().getValue()); 34 } 35 36 @Test 37 public void useClassScopedMockDefinedByBaseClass() { 38 assertEquals("TEST0", new RealClass0().getValue()); 39 } 40 41 @Test 42 public void setUpAndUseSomeFakes() { 43 assertEquals("TEST1", new RealClass1().getValue()); 44 assertEquals("REAL2", new RealClass2().getValue()); 45 46 new FakeClass2(); 47 48 assertEquals("TEST2", new RealClass2().getValue()); 49 assertEquals("TEST1", new RealClass1().getValue()); 50 } 51 52 @Test 53 public void setUpAndUseFakesAgain() { 54 assertEquals("TEST1", new RealClass1().getValue()); 55 assertEquals("REAL2", new RealClass2().getValue()); 56 57 new FakeClass2(); 58 59 assertEquals("TEST2", new RealClass2().getValue()); 60 assertEquals("TEST1", new RealClass1().getValue()); 61 } 62 63 @After 64 public void afterTest() { 65 assertEquals("REAL2", new RealClass2().getValue()); 66 } 67 68 @Test 69 public void classFakedInSecondTestClassMustNotBeFakedForThisTestClass() { 70 assertEquals("REAL3", new SecondJUnit4DecoratorTest.RealClass3().getValue()); 71 } 72 }