1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chanjarster-spring-test-examples

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
chapter_2_s1_test_property_source.md 5.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 23:55 3b54fb2

Глава 2: Аннотации — @TestPropertySource

@TestPropertySource[javadoc-TestPropertySource] можно использовать для того, чтобы перекрывать свойства, которые поступают из системных переменных окружения, Java-системных свойств или [@PropertySource][javadoc-PropertySource].

При этом @TestPropertySource(properties=...) имеет более высокий приоритет, чем @TestPropertySource(locations=...).

С его помощью мы можем легко настраивать и имитировать конфигурации в тестовом коде (например, изменять разделитель каталогов операционной системы, источник данных и т. д.).

Пример 1: Использование Spring Testing Tool

Сначала мы используем [@PropertySource][javadoc-PropertySource], чтобы загрузить внешний файл свойств, [PropertySourceConfig][src-ex1-PropertySourceConfig]:

@Configuration
@PropertySource("classpath:me/chanjar/annotation/testps/ex1/property-source.properties")
public class PropertySourceConfig {
}
foo=abc```

Затем мы используем [@TestPropertySource][javadoc-TestPropertySource], чтобы перекрыть это свойство:

```java
@TestPropertySource(properties = { "foo=xyz" ...

Наконец, мы тестируем успешность перекрытия (результат успешный):

@Test
public void testOverridePropertySource() {
  assertEquals(environment.getProperty("foo"), "xyz");
}

Мы также проводим дополнительные тесты с @TestPropertySource, вы можете изучить их самостоятельно. Чтобы вам было легче наблюдать за тем, как [@TestPropertySource][javadoc-TestPropertySource] перекрывает системные переменные окружения и Java-системные свойства, мы сначала выводим их значения.

Исходный код [TestPropertyTest][src-ex1-TestPropertyTest]:

@ContextConfiguration(classes = PropertySourceConfig.class)
@TestPropertySource(
    properties = { "foo=xyz", "bar=uvw", "PATH=aaa", "java.runtime.name=bbb" },
    locations = "classpath:me/chanjar/annotation/testps/ex1/test-property-source.properties"
)
public class TestPropertyTest extends AbstractTestNGSpringContextTests implements EnvironmentAware {

  private Environment environment;

  @Override
  public void setEnvironment(Environment environment) {
    this.environment = environment;
    Map<String, Object> systemEnvironment = ((ConfigurableEnvironment) environment).getSystemEnvironment();
    System.out.println("=== System Environment ===");
    System.out.println(getMapString(systemEnvironment));
    System.out.println();

    System.out.println("=== Java System Properties ===");
    Map<String, Object> systemProperties = ((ConfigurableEnvironment) environment).getSystemProperties();
    System.out.println(getMapString(systemProperties));
  }

  @Test
  public void testOverridePropertySource() {
    assertEquals(environment.getProperty("foo"), "xyz");
  }

  @Test
  public void testOverrideSystemEnvironment() {
    assertEquals(environment.getProperty("PATH"), "aaa");
  }

  @Test
  public void testOverrideJavaSystemProperties() {
    assertEquals(environment.getProperty("java.runtime.name"), "bbb");
  }

  @Test
  public void testInlineTestPropertyOverrideResourceLocationTestProperty() {
    assertEquals(environment.getProperty("bar"), "uvw");
  }

  private String getMapString(Map<String, Object> map) {
    return String.join("\n",
        map.keySet().stream().map(k -> k + "=" + map.get(k)).collect(toList())
    );
  }
}

Пример 2: Использование Spring Boot Testing Tool

[@TestPropertySource][javadoc-TestPropertySource] также может использоваться вместе с [@SpringBootTest][javadoc-SpringBootTest].

Исходный код см. в [TestPropertyTest][src-ex2-TestPropertyTest]:

@SpringBootTest(classes = PropertySourceConfig.class)
@TestPropertySource(
    properties = { "foo=xyz", "bar=uvw", "PATH=aaa", "java.runtime.name=bbb" },
    locations = "classpath:me/chanjar/annotation/testps/ex1/test-property-source.properties"
)
public class TestPropertyTest extends AbstractTestNGSpringContextTests implements EnvironmentAware {
  // ...
}

Справочные документы

В запросе приведены ссылки на документацию по тестированию программного обеспечения с использованием Spring.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chanjarster-spring-test-examples.git
git@api.gitlife.ru:oschina-mirror/chanjarster-spring-test-examples.git
oschina-mirror
chanjarster-spring-test-examples
chanjarster-spring-test-examples
master