Автоматическая инстанция в тесте Spring JUnit
У меня есть определение bean-компонента Spring XML, для которого я хочу написать интеграционные тесты. Определение bean-компонента XML является частью более широкого контекста приложения, где несколько таких файлов включены с использованием<import>
, Внутри определения я ссылаюсь на несколько бинов, которые приходят из других файлов.
Для моего интеграционного теста я хотел бы создать отдельное определение и использовать mockito mocks для всех других bean-компонентов. До сих пор я использую что-то вроде этого:
FooIntegrationTest.java
<code>@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration public class FooIntegrationTest { @Autowired private ClassUnderTest underTest; @Autowired private MockedClass mock; @Test public void testFoo() { } } </code>
FooIntegrationTest-context.xml
<code><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <import resource="part-to-test.xml" /> <bean id="mockedClassReferencedByName" class="org.mockito.Mockito" factory-method="mock" c:classToMock="SomeMockedClass" /> <bean class="org.mockito.Mockito" factory-method="mock" c:classToMock="OtherMockedClassReferencedByType" /> <bean class="org.mockito.Mockito" factory-method="mock" c:classToMock="MockedClass" /> ... </beans> </code>
Я хотел бы автоматизировать довольно утомительную секцию насмешек: в идеале я хотел бы, чтобы все бины, которые не найдены в контексте приложения, были автоматически смоделированы.part-to-test.xml
использования@Autowired
а также bean-компоненты, которые устанавливаются с помощью ссылок на имена. Я использую только файлы определения XML bean, и ни один не использую@Configuration
ни классы ни@Component
аннотаций.
Я рассмотрел, как использовать пользовательский контекстный загрузчик в@ContextConfiguration(loader=...)
, но я еще не нашел подходящую точку расширения для этого. Sprinockito, похоже, не решает эту проблему.
Есть ли какой-нибудь другой проект, который уже решает эту проблему? Если нет, то где бы я расширил Spring, чтобы автоматически создавать макеты?