Spring + Maven: отдельные файлы свойств для модульных и интеграционных тестов - PullRequest
3 голосов
/ 02 июля 2010

Я использую Spring 2.5.6 и создаю свой проект с помощью Maven 2.2.1. Мы используем PropertyPlaceholderConfigurer bean-компоненты в Spring для загрузки свойств для настройки таких вещей, как база данных. Довольно стандартные вещи. У нас также есть два разных набора тестов: модульные тесты и интеграционные тесты.

Я хотел бы иметь возможность использовать разные файлы свойств, чтобы по-разному конфигурировать такие вещи, как URL базы данных для двух разных типов тестов. Например, я хочу, чтобы модульные тесты использовали базу данных localhost, а интеграционные тесты - базу данных mydatabase.example.com.

Я пробовал несколько вариантов, где я размещаю файлы свойств в отдельных подкаталогах (один для модульных тестов и один для интеграционных тестов). Оттуда я попробовал что-то вроде использования тега additionalClasspathElements для maven-failsafe-plugin, но, похоже, это не сработало вообще. Я попытался использовать maven-antrun-plugin для копирования файлов в target/classes, но это не сработало, когда я запустил mvn verify -Dtest=sometest.

Я также попытался использовать systemPropertyVariables в maven, чтобы установить свойство с именем buildEnvironment, которое затем попытался сослаться в своем определении bean-компонента Spring:

<property name="locations">
  <value>classpath:${buildEnvironment}/my-test.properties</value>
</property>

Но Весна отказалась решить ${buildEnvironment}. На данный момент у меня нет идей. Я уверен, что есть хороший, простой способ сделать это, но я не могу понять это.

Любой совет будет принят с благодарностью.

1 Ответ

1 голос
/ 02 июля 2010

Вы можете включить фильтрацию ресурсов и создать свойства maven:

<build>
  <resources>
    <resource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>

<properties>
   <buildEnvironment>yourValue</buildEnvironment>
</properties>

$ {buildEnvironment} в вашей конфигурации Spring будет преобразован в "yourValue" (при условии, что он находится в каталоге src / test / resources /)

...