#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.