1
2
3
4
5
6
7
8
9 package com.codebox.instance;
10
11 import java.lang.reflect.InvocationTargetException;
12
13 import org.junit.jupiter.api.Assertions;
14 import org.junit.jupiter.api.Disabled;
15 import org.junit.jupiter.api.Test;
16 import org.junit.jupiter.api.extension.ExtendWith;
17 import org.mockito.InjectMocks;
18 import org.mockito.Mock;
19 import org.mockito.Mockito;
20 import org.mockito.junit.jupiter.MockitoExtension;
21
22
23
24
25
26 @Disabled
27 @ExtendWith(MockitoExtension.class)
28 class ClassInstanceTest {
29
30
31 @InjectMocks
32 ClassInstance<Object> classInstance;
33
34
35 @Mock
36 Class<Object> mockClazz;
37
38
39
40
41
42
43
44
45
46
47
48
49
50 @Test
51 void newInstanceInstantiationException()
52 throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
53 Mockito.when(mockClazz.getDeclaredConstructor()).thenReturn(Object.class.getDeclaredConstructor());
54 Mockito.when(mockClazz.getDeclaredConstructor().newInstance()).thenThrow(new InstantiationException());
55
56 Assertions.assertThrows(InstantiationException.class, () -> this.classInstance.newInstance(this.mockClazz));
57 }
58
59
60
61
62
63
64
65
66
67
68
69
70
71 @Test
72 void newInstanceIllegalAccessException()
73 throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
74 Mockito.when(mockClazz.getDeclaredConstructor()).thenReturn(Object.class.getDeclaredConstructor());
75 Mockito.when(mockClazz.getDeclaredConstructor().newInstance()).thenThrow(new IllegalAccessException());
76
77 Assertions.assertThrows(InstantiationException.class, () -> this.classInstance.newInstance(this.mockClazz));
78 }
79
80 }