1 package mockit;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4
5 import org.junit.jupiter.api.Test;
6
7
8
9
10 final class FakedClassWithSuperClassTest {
11
12
13
14
15 static class BaseClass {
16
17
18
19
20
21 protected int doSomething() {
22 return 123;
23 }
24 }
25
26
27
28
29 public static class Subclass extends BaseClass {
30
31
32
33
34
35 BaseClass getInstance() {
36 return this;
37 }
38 }
39
40
41
42
43 public static final class FakeForSubclass extends MockUp<Subclass> {
44
45
46
47
48
49
50 @Mock
51 public int doSomething() {
52 return 1;
53 }
54 }
55
56
57
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
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 }