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