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