View Javadoc
1   package mockit;
2   
3   import static org.junit.jupiter.api.Assertions.assertEquals;
4   
5   import org.junit.jupiter.api.Test;
6   
7   /**
8    * The Class FakedClassWithSuperClassTest.
9    */
10  final class FakedClassWithSuperClassTest {
11  
12      /**
13       * The Class BaseClass.
14       */
15      static class BaseClass {
16          /**
17           * Do something.
18           *
19           * @return the int
20           */
21          protected int doSomething() {
22              return 123;
23          }
24      }
25  
26      /**
27       * The Class Subclass.
28       */
29      public static class Subclass extends BaseClass {
30          /**
31           * Gets the single instance of Subclass.
32           *
33           * @return single instance of Subclass
34           */
35          BaseClass getInstance() {
36              return this;
37          }
38      }
39  
40      /**
41       * The Class FakeForSubclass.
42       */
43      public static final class FakeForSubclass extends MockUp<Subclass> {
44  
45          /**
46           * Do something.
47           *
48           * @return the int
49           */
50          @Mock
51          public int doSomething() {
52              return 1;
53          }
54      }
55  
56      /**
57       * Fake only instances of the class specified to be faked.
58       */
59      @Test
60      void fakeOnlyInstancesOfTheClassSpecifiedToBeFaked() {
61          BaseClass d = new Subclass();
62          assertEquals(123, d.doSomething());
63  
64          new FakeForSubclass();
65  
66          assertEquals(1, d.doSomething());
67          assertEquals(123, new BaseClass().doSomething());
68          assertEquals(1, new Subclass().doSomething());
69          assertEquals(123, new BaseClass() {
70          }.doSomething());
71          assertEquals(1, new Subclass() {
72          }.doSomething());
73      }
74  
75      /**
76       * Fake only instances of the class specified to be faked using fake method bridge.
77       */
78      @Test
79      void fakeOnlyInstancesOfTheClassSpecifiedToBeFaked_usingFakeMethodBridge() {
80          BaseClass d = new Subclass();
81          assertEquals(123, d.doSomething());
82  
83          new MockUp<Subclass>() {
84              @Mock
85              int doSomething() {
86                  return 2;
87              }
88          };
89  
90          assertEquals(123, new BaseClass().doSomething());
91          assertEquals(2, d.doSomething());
92          assertEquals(2, new Subclass().doSomething());
93          assertEquals(123, new BaseClass() {
94          }.doSomething());
95          assertEquals(2, new Subclass() {
96          }.doSomething());
97      }
98  }