Как загрузить свойства из application.properties с помощью @ExtendWith(SpringExtension.class)JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как загрузить свойства из application.properties с помощью @ExtendWith(SpringExtension.class)

Сообщение Anonymous »

Я пытаюсь изучить Spring Boot и получить четкое представление о тестировании.
Я знаю, что @SpringBootTest загружает полный контекст, я не хочу этого делать .
Я знаю, что срезовые тесты (т. е. @WebMvcTest, @JdbcTest) внутренне используют @ExtendWith(SpringExtension.class),
Что, если мне просто нужен простой интегрированный тест с моими собственными bean-компонентами, и я также хотите загрузить свойства конфигурации, можно ли использовать это с @Value?
Я знаю, что могу использовать ReflectionTestUtils, но я подумал, что, поскольку Spring Extension загружает тестовый контекст, оно должно получить приложение Файл .properties?
Пока я получаю очень странный результат с @Value: он получает ключ вместо значения. Он отлично работает с @SpringBootTest, поэтому я знаю, что свойства загружаются нормально при полной версии приложения.
Вот мой код:
application.properties в источник/тест/ресурсы:
misc.test-prop-value=testPropValue

@ExtendWith(SpringExtension.class)
публичный класс ConfigPropertiesTest {
@Value( value = "${misc.test-prop-value}")
private String testPropValue;

@Value("${some.non.existent.value}")
private String nonExistentValue;

@Test
void testNonExistentValue() {
assertNull(nonExistentValue); // Fails, the value is: ${some.non.existent.value}
}

@Test
public void testConfigProperties() {
assertEquals("testPropValue", testPropValue); //Fails, the value is: ${misc.test-prop-value}
}


Почему @Value сам подбирает ключ?
Он отлично работает с @ SpringBootTest,
Я думал, поскольку @SpringExtension загружает контекст приложения:
@ExtendWith(SpringExtension.class)
public class SpringExtensionBasicTest {

@Autowired
private ApplicationContext applicationContext;

@Test
void contextLoads() throws Exception {
//GenericApplicationContext instance:
System.out.println("Context instance: " + applicationContext.getClass());
assertNotNull(applicationContext); // Test passes
}

}

Когда я расширяю базовый класс с @SpringBootTest,
Все работает нормально, загружается контекст, и даже возникает ошибка, когда some.non.existent.value свойство не найдено.
Но с расширением Spring поведение странное.
Может быть, это глупый вопрос, я чувствую, что это одна из тех вещей, где я нахожусь у меня на лице упущено что-то настолько очевидное, что никто этого даже не объяснил, но я этого не понимаю.
А также, если я хочу свой собственный срез-тест, но я все равно хочу, чтобы файл .properties загружался, как это происходит с @ Например, JdbcTest, как это будет работать
Изменить:
Мне нужно пройти два теста при использовании @TestPropertySource, но несуществующее значение это значение null для @SpringBootTest, все равно показывает тот же ключ:
@ExtendWith(SpringExtension.class)
@TestPropertySource(value = "classpath:application.properties")
public class ConfigPropertiesTest {

@Value( value = "${misc.test-prop-value}")
private String testPropValue;

@Value("${family.mother}")
private String mamaValue;

/**
* When a non-existent value is there,
* It is not null for some strange reason,
* But it still shows the key
*/
@Value("${some.non.existent.value}")
private String nonExistentValue;

@Test
void testNonExistentValue() {
//Still shows ${some.non.existent.value}
assertNull(nonExistentValue);
}

@Test
void testPropValue1() {
assertEquals("Mama-test", mamaValue); //Ok
}

@Test
public void testConfigProperties() {
assertEquals("testPropValue", testPropValue); //Ok
}

}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ringextens
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как загрузить свойства из application.properties с помощью @ExtendWith(SpringExtension.class)
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить свойства из application.properties с помощью @ExtendWith(SpringExtension.class)
    Anonymous » » в форуме JAVA
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить свойства из Application.properties с @extendwith (springextension.class)
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Не удалось внедрить контекст приложения в тест Spring Boot Unit, запущенный с @ExtendWith(SpringExtension.class)
    Anonymous » » в форуме JAVA
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Sts на vsc не взимает плату с gradle.properties на application.properties на win10. как мне это сделать?
    Anonymous » » в форуме JAVA
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»