#java #spring #spring-boot #groovy #spring-boot-test
Вопрос:
Я хотел бы узнать, как написать SpringBootTest для существующего класса конфигурации приложения с целью тестирования функциональности чтения приложения.файл yml. Я был бы доволен java или groovy. Я не могу поделиться существующим классом конфигурации приложения, поэтому я с радостью приму любой предложенный пример, который начинается с существующей конфигурации приложения, которая читается в приложении.файл yml и анализирует данные в этом файле для объектов, которым необходимо получить конфигурации.
На сегодняшний день то, что я прочитал до сих пор, не помогло мне понять, как это сделать, и я здесь со шляпой в руке, прося о некоторой помощи. Я понимаю некоторые основные концепции Spring Boot и тестирования Spring Boot, но на самом деле подключение его с нуля для выполнения этой конкретной задачи дает мне понять, что мне не хватает чего-то важного в подходе к тому, как это сделать.
Если вы хотите потратить время, чтобы объяснить мне это, это здорово, но я, конечно, не ожидаю, что вы проведете новичка с весенней загрузкой через этот материал, если вы видели документацию в Интернете, учебные пособия или даже видео, которые подходят для этой задачи.
На сегодняшний день ресурсы, которые я нашел, не заполнили этот недостающий пробел, который позволил бы мне перейти от существующего класса конфигурации приложений к созданию нового класса тестов конфигурации приложений из него. Сама документация Spring, похоже, замалчивает некоторые вещи, такие как: минимальные требования.
Ответ №1:
Я полагаю, что у вас есть application.yml
.
Например, вы определили некоторые свойства системы очереди сообщений.
mq:
receive_channel: "RES"
send_channel: "REQ"
Прежде всего, вы должны определить класс, который представляет связанные значения, которые вы поместили в свой .yml
файл.
public class MQProperties {
private String receive_channel;
private String send_channel;
// getter and setters
}
Во-вторых, вы должны определить класс конфигурации, как показано ниже.
@Configuration
@PropertySource(value = "classpath:application.yml")
public class ApplicationConfigurationProperties {
@Bean
@ConfigurationProperties(prefix = "mq")
public MQProperties mqProperties() {
return new MQProperties();
}
}
Наконец, в своем тестовом классе вы проверяете значение свойств.
@RunWith(SpringRunner.class)
@SpringBootTest
public class PropertiesTest {
@Value("${mq.receive_channel}")
private String mqReceiveChannel;
@Value("${mq.send_channel}")
private String mqSendChannel;
@Autowired
private ApplicationConfigurationProperties configurationProperties;
@Test
public void get_mq_receive_channel() {
assertThat(configurationProperties.mqProperties().getReceive_channel()).isEqualTo(mqReceiveChannel);
}
@Test
public void get_mq_send_channel() {
assertThat(configurationProperties.mqProperties().getSend_channel()).isEqualTo(mqSendChannel);
}
}
Комментарии:
1. Спасибо. Это закрепляет некоторые концепции, которые, как я подозревал / которые, как мне казалось, я понимал, но не видел так хорошо собранными раньше. Я с радостью поддержу этот ответ, когда смогу это сделать. Вы прекрасно изложили основные предположения, некоторые из которых я мог бы / должен был сформулировать, но вы проделали замечательную работу. Это позволяет достичь цели сбора полного минимума того, что необходимо установить для создания теста конфигурации приложения, загружающего существующее приложение. файл yml.