Я думаю, что Spring Boot Test не загружает бин MyProcessor
в этой тестовой конфигурации.
Обычно, если боб загружен, аннотация @SpyBean
может дать команду пружине обернуть исходный бин так, чтобы Вы получите шпион. Тем не менее, вы должны предоставить тестовую конфигурацию весенней загрузки таким образом, чтобы он обнаружил исходный компонент MyProcessor.
Если у вас есть класс конфигурации, укажите точку останова / log:
@Configuration
public class MyConfiguration {
@Bean
public MyProcessor myProcessor(...) {
return new MyProcessor(); // <-- put breakpoint here and see whether its called at all
}
}
В качестве альтернативы, если у вас есть что-то вроде:
@Component
public class MyProcessor {
.... <-- put a breakpoint in constructor (create a default one if you don't have any)
}
Если мое предположение верно, теперь вы должны увидеть, что этот класс вообще не вызывается, и вы понимаете почему установка не делает работа.
Теперь вместо @SpringBootTest(classes = Application.class)
попробуйте @SpringBootTest
Это попытается имитировать c процесс запуска приложения с весенней загрузкой с рекурсивным сканированием конфигураций и всего остального (это широкий topi c на самом деле вы должны прочитать документацию по тесту весенней загрузки).
Вместо того, что вы сделали, говорят Spring: «Я просто хочу работать с предопределенным классом конфигурации Application
и все, не надо» не сканировать что-либо, не разрешать конфигурации, не разрешать бины, я знаю, что я делаю ".
После этого шага, если вы следовали соглашениям пакетов, предлагаемым sp При загрузке кольца вы должны увидеть, что оригинальный бин MyProcessor
загружен и шпион создан