Я использую тесты JUnit с конфигурацией Spring, определенной в классе, аннотированном @Configuration
в моем тесте JUnit. Тесты выглядят так:
@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());
, и я хотел бы избежать использования конфигурации XML Spring.
Есть ли способ, как я могу зарегистрировать пользовательскую область в модульном тесте?