Automatische Scheininstanziierung in einem Spring JUnit-Test

Ich habe eine Spring XML Bean-Definition, für die ich Integrationstests schreiben möchte. Die XML-Bean-Definition ist Teil eines größeren Anwendungskontexts, in dem mehrere solcher Dateien verwendet werden<import>. In der Definition verweise ich auf mehrere Beans, die aus anderen Dateien stammen.

Für meinen Integrationstest möchte ich die Definition als eigenständige Instanz instanziieren und Mockito-Mocks für alle anderen Beans verwenden. Bisher benutze ich so etwas:

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>

Ich möchte den ziemlich langwierigen Mocking-Bereich automatisieren: Idealerweise möchte ich alle Beans, die nicht im Anwendungskontext gefunden werden, automatisch verspotten lassen. Daspart-to-test.xml Verwendet@Autowired sowie Beans, die mithilfe von Namensreferenzen festgelegt werden. Ich verwende nur XML-Bean-Definitionsdateien und auch keine@Configuration Klassen noch@Component Anmerkungen.

Ich habe mir überlegt, wie man einen benutzerdefinierten Kontextlader in verwendet@ContextConfiguration(loader=...), aber ich habe noch keinen passenden Erweiterungspunkt dafür gefunden. Sprinockito scheint dieses Problem nicht anzugehen.

Gibt es ein anderes Projekt, das dieses Problem bereits löst? Wenn nicht, wo würde ich Spring verlängern, um die Mocks automatisch zu erstellen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage