2015-12-11 4 views
1

Я хочу выполнить это. Запустите фоновый процесс (фактически экземпляр Solr), который будет использоваться всеми тестами в моем JUnit Suite.Доступ к Spring beans из Junit Suite

Для этого - Создал класс JUnit с комментариями @RunWith(Suites.class). И добавил ClassRule в Suite, чтобы запустить сервер и остановить его. Индивидуальные тесты в сюите были аннотированы с @SpringApplicationConfiguration и @RunWith(SpringJunit4ClassRunner.class). И я также нуждаюсь в доступе к некоторым из Бобах в самой Сюите (например, к компоненту, настроенному на весну). Каков наилучший способ сделать это. То, что я пробовал.

  1. Аннотированные индивидуальные тесты с @SpringApplicationConfiguration
  2. Если бы Люкс создать ApplicationContext через SpringApplication.run и получить доступ к любому компоненту, что он хочет (пружинный удалось Настройки боб, например, и использовать его один из ClassRules из этого Люкс) ,

Что я заметил, что ApplicationContext контекст будет создаваться каждый раз, один за люкс, потому что я назвал SpringApplication.run и один для каждого теста. Я, очевидно, хочу этого избежать, и кеширование ApplicationContext между тестовыми запусками также не работает в этом случае.

Итак, каковы наилучшие методы обработки этого случая. Любые предложения/рекомендации будут высоко оценены.

+0

Весенние люди: любая рекомендация? –

ответ

0

Это давно забытый вопрос, но это показано на моем поиске Google, поэтому я предполагаю, что это еще как-то отношение :)

Я шел по тому же пути, но я ударил так много дорожных блоков, Я решил изменить свой подход:

  1. Создайте бегун JUnit, как описано here.
  2. Изменить # 1 чтобы наследовать SpringJUnit4ClassRunner здесь example.
  3. Наконец, аннотировать классы тестов с @RunWith(MyCustomRunner.class)

Там вы идете. Вы можете добавить в свою бегущую логику.