Изменение области действия многих бинов Spring во время тестов - PullRequest
2 голосов
/ 21 января 2012

Я запускаю тесты с использованием Spring (SpringJUnit4ClassRunner и @ContextConfiguration). Тесты проводятся параллельно. Некоторые из моих бинов одноэлементные, и я хотел бы изменить их, чтобы они входили в «поток» тестов. Я хочу, чтобы у каждого теста был свой экземпляр компонента.

Я справился с этим, имея файл applicationContext.xml и файл applicationTestContext.xml, который используется для тестов. В applicationTestContext.xml я определяю эти bean-компоненты с областью действия «thread».

Проблема в том, что каждый раз, когда мы добавляем новый bean-компонент этого типа, нам нужно будет добавлять его и в applicationContext.xml, и в applicationTestContext.xml, что довольно раздражает. Есть ли способ сделать это с меньшим количеством шаблонов?

1 Ответ

3 голосов
/ 21 января 2012

Соберите все bean-компоненты, область действия которых вы хотите настроить, и поместите их в отдельный файл конфигурации bean-компонентов, включенных как applicationContext, так и applicationTestContext, например,

<import resource="customScopedBeans.xml"/>

Затем используйте заполнитель дляобласть действия

<bean class="com.Foo" scope="${threadOrSingleton}" />

и объявить свойство по-разному в родительском файле конфигурации.

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="properties">
      <value>threadOrSingleton=thread</value>
  </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...