ho questo codice:Iniezione di bean Mockito e CDI, @InjectMocks chiama @PostConstruct?
class Patient {
@Inject Syringe syringe;
@PostConstruct
void sayThankyouDoc() {
System.out.println("That hurt like crazy!");
}
}
@RunWith(MockitoJUnitRunner.class)
class TestCase {
@Mock
Syringe siringeMock;
@InjectMocks
Patient patient;
//...
}
mi aspettavo Mockito chiamare PostConstruct, ma ho dovuto aggiungere:
@Before
public void simulate_post_construct() throws Exception {
Method postConstruct = Patient.class.getDeclaredMethod("sayThankyouDoc", null);
postConstruct.setAccessible(true);
postConstruct.invoke(patient);
}
C'è un modo migliore per fare questo?
un disegno diverso che sia più leggibile e più facile da testare, è quello di non usare '@ PostConstruct' a tutti, e utilizzare l'iniezione del costruttore, invece di iniezione campo – geoand
@geoand ma che cosa è l'iniezione del costruttore? – gurghet
Vedere la mia risposta sotto – geoand