Получить @ConfigurationProperties боб, подключенный автоматически в Junit

#java #spring-boot #junit4

Вопрос:

введите код здесЬ У меня есть класс с аннотацией @ConfigurationProperties в весенней загрузке, как я могу подключить этот компонент автоматически в тестах Junit

 @ConfigurationProperties  public class ConfigClass{  public String property; }  

—Сейчас проводится проверка—

 @RunWith(MockitoJunitRuner.class)  class MyTests{   @Autowired  private ConfigClass configClass;   @Test  public myTest1(){  String prop = configClass.getProperty();  //Some assert  }  

— configClass выходит как нулевой, когда я запускаю этот тест —

Ответ №1:

тестирование springboot с помощью JUnit вы можете использовать @RunWith(SpringRunner.class) или @SpringBootTest, который загружает весь контекст

если вы хотите специально протестировать свою конфигурацию, используйте аннотацию @TestConfiguration. Существует два способа использования аннотации: Либо в статическом внутреннем классе в том же тестовом классе, в котором мы хотим @Автоматически подключить компонент, либо создать отдельный класс конфигурации теста:

я выберу первый вариант внутри статического класса

см. Пример ниже ,

 @ConfigurationProperties  public class ConfigClass{  public String property; } --Now under Test--  @RunWith(MockitoJunitRuner.class)  class MyTests{    @Autowired  private ConfigClass configClass;  **// here use the @TestConfiguration annotation not @Test**   @TestConfiguration  public myTest1(){  String prop = configClass.getProperty();  //Some assert  }  

//Хорошо, это работает, теперь есть еще один класс, как показано ниже, который является частью теста, и класс конфигурации там не подключается автоматически, есть идеи

ПРИМЕЧАНИЕ: я предлагаю использовать второй вариант, который имеет отдельный класс тестовой конфигурации для автоматического подключения всех конфигураций в классах, как показано ниже

 @TestConfiguration public YourTestConfigurationClass () { // plus all the other code which worked    @Component  public class OtherClass{    @Autowired  private ConfigClass configClass;  } }  

Комментарии:

1. Я могу получить компоненты и соответствующие компоненты в Junits, но не свойства конфигурации

2. @KiranChannayanamath не могли бы вы, пожалуйста, показать ваш код ?

3. Я отредактировал сообщение, пожалуйста, найдите код . @Ахмед Хосни

4. я обновил свой ответ, пожалуйста, проверьте, работает ли он для вас

5. Да, это работает, но есть еще одно предостережение, которое я упомянул в вашем коде, пожалуйста, проверьте, извините, что не было упомянуто в моем первоначальном посте @AhmedHosny.