У меня миссия по сокращению времени сборки нашего проекта, и я заметил, что есть некоторые @BootIntegrationTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
тесты, которые восстанавливают контекст Spring каждый раз из-за использования @MockBean
(который загрязняет контекст ).
Я пытался заменить вышеупомянутые bean-компоненты @Import
на класс, который выглядит как
@Configuration
public class MyTestConfiguration {
@Bean
@Primary
public MyService myService() {
return mock(MyService.class);
}
}
Однако в будущем вызов метода when (myService) ... завершится неудачей. со знакомой ошибкой «этот объект не фиктивный», потому что Spring обернул макет собственным классом.
Как мне обойти эту проблему? Кроме того, если AIntegrationTest
требует загрузки дополнительного AITConfiguration
и BIntegrationTest
требует загрузки BITConfiguration
, могут ли они по-прежнему использовать один и тот же основной контекст Spring Boot, не портя его, чтобы избежать дополнительного времени запуска?
Заранее спасибо:)