У меня много разных тестов SpringBoot.До сих пор срезы автоматической конфигурации были действительно полезны, особенно в сочетании с @MockBean
.
Но в моем текущем тесте такой фрагмент не подходит, и загрузка полного контекста с использованием @SpringBootTest
не являетсяслишком медленный.
Есть ли способ вручную установить кончик дерева объектов, с которого нужно начинать, и оттуда пружина автоматически связывает все необходимые бины?Или есть способ установить все необходимые bean-компоненты вручную?
В моем конкретном случае я хочу протестировать сгенерированный MapStruct преобразователь (используя componentModel = "spring"
), этот преобразователь использует два других преобразователя, каждый из которых внедряет службу для выполнения своихРабота.
Сервисы предоставляются через @MockBean
:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductResponsibleUnitMapperTest {
@Autowired
private PRUMapper mapper;
@MockBean
private TradingPartnerService tradingPartnerService;
@MockBean
private ProductHierarchyService productHierarchyService;
@Test
public void mapForthAndBack(){
//works but takes ages to boot
}
}
Я не могу использовать инжектор конструктора в средствах отображения (для сервисов), поскольку MapStruct не будет генерировать правильные реализации.
Как получить Spring-Context, содержащий только необходимые компоненты?