Во-первых, на такой класс невозможно написать хороший unit-тест.
У вас бин создается вручную в тесте. Зачем? Чтобы нормально протестировать это дело, надо добавить к тестовому контексту конфиг с данным бином ( в данном случае конфиг, который содержит @Bean Parent parent(){...} ). Если там же рядом будет лежать и @Bean Child child, то в тест вы спокойно через @Autowire инжектите бины и тестируете их спокойно. Если вдруг в тесте вам нужна другая реализация Child ( например, замоканное значение), то вы с таким же успехом просто переопределяете бин в тестовом конфиге и получаете профит.
У вас бин создается вручную в тесте. Зачем? Чтобы нормально протестировать это дело, надо добавить к тестовому контексту конфиг с данным бином ( в данном случае конфиг, который содержит
@Bean Parent parent(){...}
). Если там же рядом будет лежать и@Bean Child child
, то в тест вы спокойно через@Autowire
инжектите бины и тестируете их спокойно. Если вдруг в тесте вам нужна другая реализация Child ( например, замоканное значение), то вы с таким же успехом просто переопределяете бин в тестовом конфиге и получаете профит.Абстрактный класс может в себе хранить состояние, а интерфейс — нет