Я использую тесты JUnit с конфигурацией Spring, определенной в классе, аннотированном @Configuration
в моем тесте JUnit. Тесты выглядит следующим образом:Как использовать пользовательскую область Spring с модульными тестами (SpringJUnit4ClassRunner)
@ContextConfiguration(classes = MyConfiguration.class})
@RunWith(SpringJUnit4ClassRunner.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class SomeIntegrationTest {
@Autowired
private MyConfiguration myConfiguration;
@Test
public void someTest() throws Exception {
myConfiguration.myBean();
}
}
В MyConfiguration
, я хотел бы использовать Spring сферу SimpleThreadScope
:
@Configuration
public class MyConfiguration {
@Bean
@Scope("thread")
public MyBean myBean() {
return new MyBean();
}
}
При запуске теста, объем не зарегистрирован, хотя. Я получаю
java.lang.IllegalStateException: Failed to load ApplicationContext
...
Caused by: java.lang.IllegalStateException: No Scope registered for scope 'thread'
Я знаю, как настраиваемая область может быть зарегистрирована программно: context.getBeanFactory().registerScope("thread", new SimpleThreadScope());
, и я хотел бы, чтобы избежать использования конфигурации Spring XML.
Есть ли способ, как я могу зарегистрировать пользовательскую область в модульном тесте?
вы решили эту проблему? если да, то как вы его решили? – Xstian
Привет, я нашел довольно изящное решение, но я как бы спрятал его где-то и не могу найти его сейчас (код был реорганизован с) :). Позвольте мне взглянуть на него немного дольше. – Mifeet