У меня есть этот код:Mockito и CDI bean injection, делает @InjectMocks называть @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;
//...
}
я ожидал Mockito позвонить PostConstruct, но я должен был добавить:
@Before
public void simulate_post_construct() throws Exception {
Method postConstruct = Patient.class.getDeclaredMethod("sayThankyouDoc", null);
postConstruct.setAccessible(true);
postConstruct.invoke(patient);
}
Есть ли лучший способ сделать это?
Другой дизайн, который является более читаемым и легче проверить, чтобы не использовать '@ PostConstruct' на всех, и использовать инъекции конструктора вместо инъекции поля – geoand
@geoand но что _is_ конструктор инъекции? – gurghet
См. Мой ответ ниже – geoand